【问题标题】:how to set path for uploaded files using zend framework?如何使用zend框架设置上传文件的路径?
【发布时间】:2012-03-06 21:20:49
【问题描述】:

我正在尝试上传视频并使用 zend 框架将其转换为 php,但我的逻辑有点问题。

我有一个本地目录,需要保存上传的文件:

C:/xampp/htdocs/zend/videos/

首先我需要转换视频,然后将其移动到该目录中。

对于使用类似这样的转换即时消息:

exec("ffmpeg -i video.avi -ar 22050 -ab 32 -f flv -s 320x240 video.flv", $out);

这是我的表格的一部分:

$file = new Zend_Form_Element_File('file');
    $file->setLabel('File')
        ->setRequired(true)
        //->setDestination('/var/www/tmp') use in real life
        ->setDestination('C:/xampp/htdocs/zend/tmp')
        ->addValidator('Size',
                false,
                array('min' => '10kB', 'max' => '100MB'));

当我上传文件时,它会转到那个目录就好了。

是否需要转换tmp目录下的文件,然后移动到我的另一个主目录,然后删除原来的?

有没有办法将原始文件临时保存在临时目录中,直到它被转换,然后它会自动删除自己?

我也在尝试使用Zend_File_Transfer_Adapter_Http,但我有点困惑setDestinationRename 过滤器中的target 之间的区别以及是否需要使用它。

我家有人可以为这个问题带来一些启示,也许是一些最佳实践。

谢谢

【问题讨论】:

    标签: php zend-framework file-upload zend-file


    【解决方案1】:

    我也在尝试使用 Zend_File_Transfer_Adapter_Http 但我有点 混淆 setDestination重命名过滤器中的目标以及是否需要使用它。

    setDestination() 已弃用,而应使用Rename 过滤器。如果您设置了Rename 过滤器,它将覆盖目标。否则,差别不大。主要区别在于Rename 过滤器可以重命名文件,其中setDestination 保留用户PC 上的原始文件名,并且仅将其移动到目标位置。如果您不仔细命名,这可能会导致现有文件被覆盖或有人破坏其他用户的文件。

    我需要把tmp目录下的文件转换一下然后移动到 我的另一个主要的,然后删除原来的?

    就我个人而言,我不会尝试在文件上传时对其进行转换。虽然在许多情况下转换可能很快,但如果上传了相对较大的视频并且需要额外 4 分钟来对视频进行编码,会发生什么情况?您不希望用户挂在那里等着想知道转换发生时发生了什么。

    我会上传文件,将它们复制到一个临时位置,在那里它们将被转换,然后移动到原始位置。这当然会增加复杂性。

    如果您想在上传视频时即时转换它们,我什至可能根本不会使用Zend_File_Transfer_Adapter_Http。相反,使用$_FILES 超全局访问$_FILES['videofile']['tmp_name'] 并让ffmpeg 转换该文件并将输出写入最终目标或临时目标,然后在转换完成时将其移动。当请求终止时,上传到 PHP 的文件会自动删除,除非您调用 move_uploaded_file 或手动将临时文件写入永久位置。

    有没有办法将原始文件保存在临时目录中 暂时的,直到它被转换,然后它会自动 删除自己?

    是的,如果你没有Zend_File_Transfer。上传的文件会自动在一个临时目录中,直到 PHP 请求终止。如果您即时进行转换,PHP 完成时会自动删除原始临时文件。

    希望这可以为您解决一些问题。

    【讨论】:

    • $_FILES['videofile']['tmp_name'] 为我工作。 +1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多