PHP检查是否选择了要上载的文件
我有这个表单,我想检查用户是否选择了一个文件PHP检查是否选择了要上载的文件,php,post,Php,Post,我有这个表单,我想检查用户是否选择了一个文件 <form action="upload.php" method="POST" enctype="multipart/form-data" > <select name="category"> <option value="cat1" name="cat1">Productfotografie</option> <option value="cat2" na
<form action="upload.php" method="POST" enctype="multipart/form-data" >
<select name="category">
<option value="cat1" name="cat1">Productfotografie</option>
<option value="cat2" name="cat2">Portretten</option>
<option value="cat3" name="cat3">Achitectuur</option>
</select>
<input type="file" name="file_upload">
<input type="submit" name="submit" value="Upload photo">
</form>
但即使我选择了某些内容,也会出现“未选择文件错误”。有线索吗?对不起,我对PHP真的很陌生
编辑:我已尝试替换$fileupload=$\u文件['file\u upload']
,但它打印了一个空错误
(数组([文件上传]=>数组([名称]=>[类型]=>[tmp\U名称]=>
[错误]=>4[大小]=>0)))
当我没有输入文件时?使用
$\u FILES
数组和UPLOAD\u ERR\u NO\u file
常量:
if(!isset($_FILES['file_upload']) || $_FILES['file_upload']['error'] == UPLOAD_ERR_NO_FILE) {
echo "Error no file selected";
} else {
print_r($_FILES);
}
您还可以选中UPLOAD\u ERR\u OK
,它指示文件是否已成功上载(存在且无错误)
注意:您不能在$\u FILES['file\u upoad']
数组上使用empty()
,因为即使没有上传任何文件,数组仍然会被填充,并且error
元素被设置,这意味着empty()
将返回false
,因为自PHP4.1.0以来有可用的$\u文件。此变量保存有关上载文件的信息。所以你应该编码
$fileupload = $_FILES['file_upload'];
if (isset($fileupload)) {
print_r($_FILES);
} else {
echo "Error no file selected";
}
首先,单击提交而不选择文件
/* check input 'submit' */
if (isset($_POST['submit'])) {
print($_FILES);
}
结果:
> Array (
> [file_upload] => Array
> (
> [name] =>
> [type] =>
> [tmp_name] =>
> [error] => 4
> [size] => 0
> )
>
> )
使用而不是
$\u POST
访问上载的文件。@showdev我已尝试替换$fileupload=$\u文件['file\u upload'],但它打印了一个空错误(数组([file\u upload]=>Array([name]=>[type]=>[tmp\u name]=>[error]=>4[size]=>0)))当我没有输入文件时?这是正确的:如果没有选择要在表单中上载的文件,PHP将把$\u FILES['userfile']['size']返回为0,把$\u FILES['userfile']['tmp\u name']返回为none。
-您确定表单enctype是多部分/表单数据吗。如果未设置,则会显示为空。这是否回答了您的问题-1 empty()将始终返回false,即使没有上载任何文件。我已经尝试了你的代码,但它不起作用。如果我不输入文件,它只打印一个空数组。“数组([file_upload]=>Array([name]=>[type]=>[tmp_name]=>[error]=>4[size]=>0))”谢谢,我在发布之前已经尝试了其他人的建议,他们错了。它不起作用。但是你的代码是有效的!非常感谢你。我是新来的,还在学习,也谢谢你关于empty()的提示:)你太棒了。如果文件类型是多重检查,那么使用empty更可靠if(!empty($\u FILES['file\u upload']))
或者if(empty($\u FILES['file\u upload'])
真的谢谢MrCode。。!!感谢您提供这段代码片段,它可能会提供一些即时帮助。通过说明为什么这是一个很好的解决问题的方法,正确地解释它的教育价值,并将使它对未来有类似但不完全相同问题的读者更有用。请在回答中添加解释,并说明适用的限制和假设。
> Array (
> [file_upload] => Array
> (
> [name] =>
> [type] =>
> [tmp_name] =>
> [error] => 4
> [size] => 0
> )
>
> )
/* check input submit */
if (isset($_POST['submit'])) {
/* check input file_upload on error */
if (isset($_FILES['file_upload']['error'])) {
/* check code error = 4 for validate 'no file' */
if ($_FILES['file_upload']['error'] == 4) {
echo "Please select an image file ..";
}
}
}