【发布时间】:2011-05-01 16:25:04
【问题描述】:
我创建了一个包含 3 个 <input type="file"/> 的表单
我看到我得到了一个带有array(name=>"") 的数组。
所以我改为检查if ($_FILE["myfilename"]["name"]=="")。
这可行,但对我来说似乎很不寻常。
我想知道是否有更好的方法来检查文件输入是否已设置?
【问题讨论】:
我创建了一个包含 3 个 <input type="file"/> 的表单
我看到我得到了一个带有array(name=>"") 的数组。
所以我改为检查if ($_FILE["myfilename"]["name"]=="")。
这可行,但对我来说似乎很不寻常。
我想知道是否有更好的方法来检查文件输入是否已设置?
【问题讨论】:
有:is_uploaded_file()。在处理上传的文件时,出于安全原因,您应该始终使用它(及其表亲move_uploaded_file())。
【讨论】:
$_FILES[*]['tmp_name'] 中的值相同。它不检查任何其他内容。不确定如何在脚本运行时向 $_FILES 注入一些东西。 (如果您使用 move_uploaded_file,Is_uploaded_file 将是多余的,因为它包含复制和粘贴完全相同的测试。)
../config.php)注入tmp_name ,导致该文件被复制到公共uploads/ 目录或任何地方。 is_uploaded_file() 是针对这一点引入的。不使用is_uploaded_file()是否还存在漏洞,我不知道,从没查过
is_uploaded_file() 只是检查FILES 数组的一种奇特(并且如上所述,安全性增强)方式
假设您使用的是最新的 PHP (4.2+),最好的方法是检查:
$_FILE['myfilename']['error'] === UPLOAD_ERR_OK
如果这是真的上传工作,你可以看到其他可能的值列表here
【讨论】:
===。如果您应该在 ERR_OK 常量上创建类型,则常规比较将给出错误的“ok”。
你可以试试这个:
if($_FILES['myfilename']['size'] > 0 ) {
}
else{
echo 'File is not uploaded . . .';
}
【讨论】:
试试这个:
if($_FILES["uploadImg"]['name'][0] != ''){
//echo 'file attached';
}else{
//echo 'no file attached';
}
这对我有用...
【讨论】: