您好,由于某种原因,我无法让我的程序查看我的文件是否为空,如果选择了某些内容,它不应该通过,但它是。这是代码
if (empty($_FILES['file'] ) )
{
echo "testing";
$seterror =1;
returnBack();
}
您好,由于某种原因,我无法让我的程序查看我的文件是否为空,如果选择了某些内容,它不应该通过,但它是。这是代码
if (empty($_FILES['file'] ) )
{
echo "testing";
$seterror =1;
returnBack();
}
从您在评论中提供的 var_dump($_FILES) 看来,它似乎没有回显“测试”(即它不起作用),因为 $_FILE['file'] 不为空。
根据您提供给我的内容:
$_FILES['file'] = array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["错误"]=> int(4) ["size"]=> int(0) }
我不完全确定 empty() 如何处理数组(文档只是说它将为空数组返回 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();
}
如果你输出文件数组,你会得到什么?(即print_r($_FILES);
)
您的代码不会告诉您调用的文件的内容是否file
为空,它会告诉您的值是否$_FILES['file']
为空,这可能不是您想要的。你也可能不想要这样的逻辑empty
——你试过这个看看是否有区别吗?
if (array_key_exists('file', $_FILES)) {
...
}
我想你可以试试这个
if(empty($_FILES['file']['name']))
{
// not uploaded
}
else
{
// uploded
}
PHP 中的语言结构empty()
和数组不能很好地混合。此外,如果您<input type='file' name='file' />
的表单中有 a,您将获得一个$_FILES[]
数组。你应该做if( !array_key_exists('file', $_FILES) ) { // no file uploaded }
的开始。
实际上,您应该进行几项检查:
file
元素被填充$_FILES
$_FILES['file']['error']
== 0)只有所有这些都是真实的,您才有要处理的文件。否则你不会。
我发现在文件上传处理程序上认真执行这些步骤是完全可靠的。
如果您正在测试空文件,这里是代码
$file = 'test.txt';
if(filesize($file) == NULL) {
echo "empty";
}
好的,所以我必须做的是检查它是否出错 - 所以如果它出错了,它就不会通过,因为这意味着它是空的
代码:
if (!empty($_FILES['file']['error'] ) )
{
echo "file";
$seterror =1;
returnBack();
}
非常感谢你们的帮助!