我正在尝试创建一个用户上传大文件的表单。但是,当文件大于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
如果有人想知道为什么这对大文件不起作用,我会非常感激。
答案 0 :(得分:0)
将此行$upload->isUploaded()
更改为$upload->isUploaded('buildfile')
&amp; $upload->isUploaded()
至$upload->isUploaded('buildfile')