我有一个带有名为 的文件字段的表单image
,但此字段不是必需的。
当用户在表单中没有选择任何文件时,do_upload()
总是返回错误。
如何在控制器中执行上传操作之前检查用户是否选择了文件?
问问题
52813 次
9 回答
42
请使用空()
if (empty($_FILES['userfile']['name'])) {
}
于 2012-12-19T13:28:48.077 回答
5
尝试使用 . 检查文件是否有效is_uploaded_file()
。例如:
if(is_uploaded_file($_FILES['userfile']['tmp_name']))
{
do_upload();
}
于 2012-12-19T13:28:13.677 回答
5
在您的控制器中,在接收提交表单的函数上:
if (isset($_FILES['image']['name']) && !empty($_FILES['image']['name'])) {
// do_upload
}
于 2012-12-19T13:28:27.220 回答
1
这是检查文件字段是否在php中为空的完整脚本
<!DOCTYPE html>
<html>
<body>
<form action="#" method="post" enctype="multipart/form-data">
Select image to upload:
<input name="my_files[]" type="file" multiple="multiple" />
<input type="submit" value="Upload Image" name="submit">
</form>
<?php
if (isset($_FILES['my_files']))
{
$myFile = $_FILES['my_files'];
$fileCount = count($myFile["name"]);
for ($i = 0; $i <$fileCount; $i++)
{
$error = $myFile["error"][$i];
if ($error == '4') // error 4 is for "no file selected"
{
echo "no file selected";
}
else
{
$name = $myFile["name"][$i];
echo $name;
echo "<br>";
$temporary_file = $myFile["tmp_name"][$i];
echo $temporary_file;
echo "<br>";
$type = $myFile["type"][$i];
echo $type;
echo "<br>";
$size = $myFile["size"][$i];
echo $size;
echo "<br>";
$target_path = "uploads/$name"; //first make a folder named "uploads" where you will upload files
if(move_uploaded_file($temporary_file,$target_path))
{
echo " uploaded";
echo "<br>";
echo "<br>";
}
else
{
echo "no upload ";
}
}
}
}
?>
</body>
</html>
但要警惕。用户可以上传任何类型的文件,也可以通过上传恶意或 php 文件来入侵您的服务器或系统。在这个脚本中应该有一些验证。
参考http://www.techzigzag.com/how-to-check-that-user-has-upload-any-file-or-not-in-php/
希望它会帮助你。
于 2015-07-22T13:13:45.297 回答
1
只需使用本机 php 代码来检查文件上传。
if(!file_exists($_FILES['myfile']['tmp_name']) || !is_uploaded_file($_FILES['myfile']['tmp_name'])) {
echo 'No upload';
}
于 2015-07-24T05:26:41.673 回答
0
使用empty()空函数确实检查文件字段是否为空
if ( ! empty($_FILES)) {...}
if(!empty($_FILES['myFileField'])) {
// file field is not empty..
} else {
// no file uploaded..
}
于 2012-12-19T13:26:51.997 回答
0
由于文件上传错误“未选择文件”是第 4 号,因此正确的做法是:
if ($_FILES['my_image_field_name']['error'] !== 4){
if ($this->upload->do_upload('my_image_field_name')) { ...
按名称或 tmp_name 检查时,可能还有其他原因导致这些字段未填充,您可能会错过这些。
于 2013-10-22T17:02:29.190 回答
0
if(!empty($_FILES[$file_name]['name'])){
// TODO your logic
}else{
echo "empty";
}
于 2017-04-13T06:26:24.433 回答
0
$file['file']->isValid()
于 2021-12-06T14:44:12.963 回答