你好,由于某些原因,我无法让我的程序看看我的文件是否为空,如果选择了某些东西,它不应该通过,但确实如此。这是代码
if (empty($_FILES['file'] ) )
{
echo "testing";
$seterror =1;
returnBack();
}
答案 0 :(得分:2)
如果输出文件数组,会得到什么? (即print_r($_FILES);
)
您的代码不会告诉您名为file
的文件的内容是否为空,它会告诉您$_FILES['file']
的值是否为空,这可能不是您想要的。你也可能不想要empty
的逻辑 - 你试过这个来看看是否存在差异?
if (array_key_exists('file', $_FILES)) {
...
}
答案 1 :(得分:2)
在评论中提供的var_dump($ _ FILES)中,看起来它没有回显“测试”(即它不起作用),因为$ _FILE ['file']不为空。
你提供给我的:
$ _ FILES ['file'] = array(5){[“name”] => string(0)“”[“type”] => string(0)“”[“tmp_name”] => string(0)“”[“error”] => int(4)[“size”] => int(0)}
我不完全确定empty()如何处理数组(documentation只是说它会为空数组返回true),但至少你需要摆脱$ _FILES ['file'] ['error'](因为它是int(4)而不是空的),或者使用empty()来检查类似$ _FILES ['file'] ['name']
的内容所以,根据我的建议,以下是代码的外观:
if (empty($_FILES['file']['name'])) {
echo "testing";
$seterror = 1;
returnBack();
}
或(因为我对PHP数组的理解可能有问题),试试这个:
if(empty($_FILES['file']['name'])) {
echo "testing";
$seterror = 1;
returnBack();
}
答案 2 :(得分:1)
如果您正在测试空文件,请输入代码
$file = 'test.txt';
if(filesize($file) == NULL) {
echo "empty";
}
答案 3 :(得分:1)
我想你可以试试这个
if(empty($_FILES['file']['name']))
{
// not uploaded
}
else
{
// uploded
}
答案 4 :(得分:1)
PHP中的语言构造empty()
和数组不能很好地混合。此外,如果表单中有<input type='file' name='file' />
,则将获得$_FILES[]
数组。你应该开始if( !array_key_exists('file', $_FILES) ) { // no file uploaded }
。
事实上,你应该做几次检查:
file
$_FILES
元素
$_FILES['file']['error']
== 0)只有所有这些都是真的,你才有一个要处理的文件。否则你不会。
我发现在文件上传处理程序上遵循这些步骤是完全可靠的。
答案 5 :(得分:0)
好的,所以我要做的就是检查一下是否有错误 - 所以如果它确实没有通过,因为它意味着它是空的
代码:
if (!empty($_FILES['file']['error'] ) )
{
echo "file";
$seterror =1;
returnBack();
}
非常感谢帮助人员!