如果上传的图像为空,如何在PHP中检测?
答案 0 :(得分:1)
BAD PRACTICE 使用上传脚本提供的文件名。您有no idea what this value can be或脚本的任何用户尝试将此值设置为。
如果要检查上传表单给出的文件名是否为空,则只需使用if(empty($_FILES['file']['tmp_name'])){...
即可返回布尔值(true / false)。 Read about empty()
。
这里存在逻辑上的不一致:
if ($_FILES['file']['size'] == 0 && $_FILES['file']['error'] == 0) {
如果文件大小为零,这通常意味着文件为NULL
或为空,或者不是您实际想要上传的文件。如果没有错误,但 $_FILES['file']['error']
只会返回零 。
您可能需要的是错误编号4,具体表示没有上传文件:
if($_FILES['file']['error'] == 4){
//no file was uploaded.
}
正如我上面所说,使用上传脚本给出的名称是 BAD PRACTICE ,如果您要使用此值,我会强烈建议您在其上使用preg_replace
删除无效字符,然后然后测试是否为空:
if($_FILES['file']['error'] == 0 && $_FILES['file']['size'] > 0){
///file was uploaded ok, has a size above zero bytes.
$uploadedFileName = preg_replace("/[^0-9a-z._-]/i","",$_FILES['file']['name']);
if (empty($uploadedFileName)){
//sorry no file name was given....
}
}
答案 1 :(得分:0)
您可以使用
轻松检查是否为空$uploadedFile = $_FILES['file']['name'];
if ($uploadedFile==""){
//do something
}
答案 2 :(得分:0)
首先检查文件名是否已设置,然后检查文件名的值是否为空。
请尝试以下代码:
if (isset($_FILES['file']['name'])) {
if ($_FILES['file']['name'] != "") {
$uploadedFile = $_FILES['file']['tmp_name'];
$image = imagecreatefrompng($uploadedFile);
...
}
}
答案 3 :(得分:0)
您可以尝试:
1
if (isset($_FILES['file']['name'])) {
//do something
}
使用$ _FILES ['userfile'] ['error']
了解详情:http://php.net/manual/en/features.file-upload.errors.php