使用Zend框架发布大型文件的表单失败

时间:2016-07-19 08:36:16

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

我正在尝试创建一个用户上传大文件的表单。但是,当文件大于1.5Gb时,表单停止工作。我的要求是8Gb max。出于测试目的,我一直在使用2Gb文件。

我有一个接受输入文件的表单。

<form id="createUpdateTrial" enctype='multipart/form-data' method="post">
    <input type="file" name="buildfile" id="buildfile"/>
</form>

然后在zend framework 1.12中,我尝试接收文件。

//Validation
        $upload = new Zend_File_Transfer();

        if ($upload->isUploaded()) {

            $upload->addValidator('Count', false, array('min' => 1, 'max' => 1));
            $upload->addValidator('Size', false,  8589934592); //8GB in bytes

            $upload->setDestination("uploads/");

            if (!$upload->isValid()) {

                $errorMessages = $upload->getMessages();
                if (count($errorMessages) > 0)
                {
                    $errorSuffix = ": " . print_r($upload->getMessages(), true);
                }
                else
                    $errorSuffix = "";

                throw new Exception("File doesn't pass validation" . $errorSuffix);
            }

            try {  
               $upload->receive();
            }
            catch (Zend_File_Transfer_Exception $e) {

                throw new Exception('Bad file data: '.$e->getMessage());
            }
        }

表单完成上传文件后,运行上述代码时,Zend_File_Transfer对象表示上传无效,并显示以下消息:

  

文件未通过验证:数组\ n(\ n [fileCountTooFew] =&gt;文件太少,预计最小值为'1',但给出'0'\ n [fileUploadErrorCantWrite] =&gt;文件'buildfile'不能写\ n)

在我的php配置文件中,我有以下设置:

  

max_input_time = 3600

     

post_max_size = 8G

     

upload_max_filesize = 8G

我可以确认服务器上有足够的空间来容纳上传的文件。服务器正在运行PHP 5.6.16

如果有人想知道为什么这对大文件不起作用,我会非常感激。

1 个答案:

答案 0 :(得分:0)

将此行$upload->isUploaded()更改为$upload->isUploaded('buildfile')&amp; $upload->isUploaded()$upload->isUploaded('buildfile')