【问题标题】:zend framework multiple input file uploadzend框架多输入文件上传
【发布时间】:2012-03-23 11:31:27
【问题描述】:

我有一个包含两个具有唯一名称的文件元素的表单。我想从 Zend_File_Transfer_Adapter_Http() 访问每个文件元素;我怎样才能做到这一点? 如果我使用

$apt = new Zend_File_Transfer_Adapter_Http(); . . $apt->receive();

已上传两个文件。但我对每个文件元素执行不同的查询。

例如

$smallPic = 我从输入 smallPic 获得的小图片名称 我执行 更新产品集 smallPic = '$smallPic' 对于大图 $largePic = 我从输入 largePic 获得的大图片名称 我执行 更新产品集 largePic = '$largePic'

如何使用 $apt 访问每个输入文件元素?

【问题讨论】:

    标签: file zend-framework input element


    【解决方案1】:

    这是我过去使用的一些代码,用于从 Zend_Form 接收多个文件,其中许多文件上传字段是动态的,而不是表单的一部分。

    既然知道两个文件上传的名字,也可以说$apt->getFileInfo('my_file');

    $apt    = new Zend_File_Transfer_Adapter_Http();
    $files  = $apt->getFileInfo();
    
    foreach($files as $file => $fileInfo) {
        if ($apt->isUploaded($file)) {
            if ($apt->isValid($file)) {
                if ($apt->receive($file)) {
                    $info = $apt->getFileInfo($file);
                    $tmp  = $info[$file]['tmp_name'];
                    $data = file_get_contents($tmp);
                    // here $tmp is the location of the uploaded file on the server
                    // var_dump($info); to see all the fields you can use
                }
             }
         }
    }
    

    希望对您有所帮助。

    【讨论】:

    • 哇!我怎么能忘记 getFileInfo() 方法。感谢您的回复,foreach 循环没有帮助,但我可以通过 $file = $apt->getFileInfo('smallPic'); 到达元素最后一个问题,我认为所有文件元素都使用一个 zend 文件适配器处理。有没有办法创建另一个适配器?或者这是一个好习惯?
    • 可以使用一个适配器,如果您使用Zend_Form创建表单,那么您不必手动使用Zend_File_Transfer,因为Zend_Form可以处理大部分的工作。见Zend_Form_Element_File
    • 我希望文档中包含这样一个简单的多文件示例。
    • @chrishiestand,好久不见,你还需要吗?
    • @hrnsky 谢谢,但我想我只是用了你的例子(因为我 +1 了你的答案)。在这一点上,我不太记得我用它做什么了。
    猜你喜欢
    • 2013-04-22
    • 2011-05-30
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    相关资源
    最近更新 更多