【问题标题】:Getting a file from a form in ZendZend 从表单中获取文件
【发布时间】:2011-07-17 22:02:21
【问题描述】:

我正在尝试使用 Zend 将文件上传到 Amazon S3。一切正常,除了我无法访问 POST[] 数组中的文件。

无论如何我可以轻松地从表单中获取文件。所有文档示例仅向您展示如何在将文件上传到本地文件系统时执行此操作。

【问题讨论】:

    标签: php zend-framework forms amazon-s3


    【解决方案1】:

    如果您从表单将文件上传到 PHP 脚本,然后打算将该文件上传到 S3,那么您正在寻找错误的超全局。

    文件上传在$_FILES,而不是$_POST。查看the PHP documentation on handling file uploads 了解如何最好地使用它。

    【讨论】:

    • 是否有 Zend 标准方法从我的控制器中处理 $_FILE?
    • 我希望在请求位中找到它,但事实证明有一个名为 Zend_File_Transfer 的类旨在通过 POST 处理上传。多么奇怪的命名。
    • 如何访问数组中包含实际值的部分。看起来我必须设置一个“setDestination”,这显然是我现在想要做的,因为我想将它上传到 s3。我有上传到s3的代码。我只是将文件/图像传递给这段代码。
    • 不知道,我不使用ZF的那部分,直接使用$_FILES,其中$_FILES['form_element_name']['tmp_name']是PHP放置上传数据的临时文件的名称。这就是您要发送到 S3 的文件。
    • 所做的只是将图像的 temp_name 上传到文本文档中。 ['form_element_name']['tmp_name'] 只是一个字符串?
    【解决方案2】:

    一旦你掌握了窍门,它就很简单了。

    $form->image->setDestination('path/to/images');
    
    if($form->isValid($_POST)){
    
      if($form->image->isUploaded()){
    
         if($form->image->receive()){
           // For example, get the filename of the upload
           $filename = $form->image->getFilename();
         }
    
      } else {
         // Not uploaded
      }
    
    } else {
      // Not valid
    }
    

    请注意,在我的示例中,image 是上传元素的名称。

    【讨论】:

      【解决方案3】:

      对上面的小修正应该是getFileName,大写N。

      $filename = $form->image->getFileName();

      【讨论】:

        猜你喜欢
        • 2011-04-04
        • 1970-01-01
        • 2015-06-21
        • 2014-08-10
        • 2016-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-30
        相关资源
        最近更新 更多