我有一个表单,用户可以通过该表单上传图像。在我的家用机器上我是这样验证的:
if(isset($_FILES['image']['name']))
它工作正常,但在我的工作机器上失败了。我需要使用:
$_FILES['image']['name'] != ''
我尝试过空($ _ FILES ['image']),但这也不起作用。 我只是想知道为什么会这样呢?
答案 0 :(得分:6)
即使设置了$_FILES['photo']
,您也应该$_FILES['photo']['error']
查看部分上传(UPLOAD_ERR_PARTIAL
)或空上传(UPLOAD_ERR_NO_FILE
)等异常,如{{1}中所述PHP手册的3}部分。
答案 1 :(得分:0)
['name']
可能未设置或为空,因为POST表单是以multipart/form-data
请求类型发送的。并且filename=
属性允许为空。我不确定,但是浏览器可能很好地配置(你是否在工作中使用MSIE进行测试?)出于安全原因而禁止它。无论如何,这不是一个可靠的领域。
这并不能解释为什么$_FILES["image"]
是空的。我也猜测那里有一个上传错误。但无论如何,您应该使用print_r($_FILES);
进行测试
另请参阅有关配置设置的常见陷阱http://php.net/manual/en/features.file-upload.common-pitfalls.php的手册部分。