【发布时间】:2018-09-02 01:25:12
【问题描述】:
好吧,我很困惑。我正在尝试学习如何在 PHP 中上传图像文件。
<form name="add_form" action="submit.php" method="post" enctype="multipart/form-data">
<input type="file" name="image">
<button type="submit">Submit</button>
</form>
在 submit.php 文件中:
print_r($_FILES);
if(empty($_FILES['file']['name'])){
echo "empty";
}else{
echo "not empty";
}
print_r($_FILES);给我看这个:
Array ( [image] => Array ( [name] => van Gogh - GalleryPlayer.jpg [type] => image/jpeg [tmp_name] => /tmp/phpbYjG7m [error] => 0 [size] => 1437795 ) )
但是当我使用 (empty($_FILES['file']['name'])) 运行 if/else 时,它总是回显“empty”。如果在 print_r($_FILES) 数组中怎么可能是空的呢?
我在这里的最终目标是检查用户是否上传了图像文件(它是较大表单的一部分)。如果他们这样做,请使用它。如果没有,请使用默认图像。所以我只是想测试表单字段的存在。有意义吗?
感谢您提供的任何见解。
干杯!
【问题讨论】:
-
需要使用
name属性访问文件if($_FILES['image']['name'] == "") echo "empty"; -
您的
print_r()输出建议您应该使用empty($_FILES['image']['name'])而不是['file']['name'] -
试过这个:
if(empty($_FILES['image']['type']))和if($_FILES['image']['name;] == "")。两者都属于第一个条件“空”。似乎我尝试过的所有变体,都空无一物。 -
刚刚也试过这个:
if(!file_exists($_FILES['image']['tmp_name']) || !is_uploaded_file($_FILES['image']['tmp_name']))。还是空着回来。
标签: php forms file-upload