我正在研究PHP上传脚本,在测试我的错误检查时,我试图上传一个17MB的TIFF文件。当我这样做时,$ _FILES数组为空。该脚本适用于我需要它做的事情,即上传JPEG文件。我的解决方案是在继续上传脚本之前测试$ _FILES是否为空。
任何人都可以解释为什么尝试上传TIFF时$ _FILES为空?是我的解决方案,检查$ _FILES是否为空,还可以吗?
这是否与php.ini
中的设置有关?
只是为了澄清
我使用以下内容检查$_FILES
是否为空:
if(empty($_FILES))
{
die('$_FILES is empty.');
}
答案 0 :(得分:7)
是的,upload_max_filesize控制TIFF文件最有可能超出的最大上传大小。默认值为2M。您可以使用以下方式进行测试:
echo ini_get("upload_max_filesize");
编辑:实际上,确切原因post_max_size更可能是{> 3}},总是> = upload_max_filesize:“如果发布数据的大小大于post_max_size,则$ _POST和$ _FILES超全局变量为空。”
答案 1 :(得分:1)
您应该检查$_FILES['file']['error']
是否等于0
。这表明“成功”。
如果您的文件数组为空,则可能是由于其他一些问题,例如不包括enctype。
尝试执行var_dump($_FILES)
并查看内容......
编辑:我知道您可以在php.ini
文件中设置max filesize,但我不确定这是否会为您提供空文件数组。我想你会得到一个错误。
答案 2 :(得分:0)
已经发布,它是空的,因为如果失败了。还要检查这样的表单元素:
<input type="hidden" name="MAX_FILE_SIZE" value="-maxsizegoeshereinbytes-" />
为了更加确定(一旦你实际拥有一个数组 - 添加到'检查错误键'帖子,顺便说一句),你也可以检查大小
if( $_FILES['file']['size'] > 0 ) {
}