如果没有选择文件,则返回false,但不工作


if no file selected, then return false, but not working

这是我的上传类:

class UploadModel
{
    public static function upload()
    {
        if(empty($_FILES['image_upload']) || !isset($_FILES['image_upload'])){
            // Session::add('feedback_negative', Text::get('FEEDBACK_IMAGE_UPLOAD_ERROR'));
        return false;
        }
    $image = new Image($_FILES['image_upload']);
    if($image){
    $upload = $image->upload(); 
    if($upload){
        //Everything is OK!
        Session::add('feedback_positive', Text::get('FEEDBACK_IMAGE_UPLOAD_SUCCESS'));            
        return true;
    }else{
        //Session::add('feedback_negative', Text::get('FEEDBACK_IMAGE_UPLOAD_ERROR'));
        // For security reasons maybe the above is the way to go? (no super obvious error message)
        Session::add('feedback_negative', $image["error"]);
        return false;
    }
}
}
}

但是由于某种原因,第一个if语句不工作(无论如何,这是我相信的)。

我认为下面的if语句会"停止"类的执行,返回false。

if(empty($_FILES['image_upload']) || !isset($_FILES['image_upload'])){
    // Session::add('feedback_negative', Text::get('FEEDBACK_IMAGE_UPLOAD_ERROR'));
return false;
}

但它没有。我得到以下错误消息

警告:getimagesize(): Filename不能是空的…

警告:getimagesize(): Filename不能为空

警告:无法修改报头信息-报头已由(输出从

开始

在虚拟的ubuntu盒子上,应用程序继续运行,至少给了我Session::add('feedback_negative', $image["error"]);的错误(没有找到图像)

但是在我的开发MAMP服务器(mac os)上,应用程序在之前的错误信息处停止。

我认为这是第一个if语句

即使没有选择文件,也始终填充

$_FILES

检查大小,看看是否有一个文件:

if ($_FILES['image_upload']['size'] > 0) {

你也可以检查文件名:

if (is_uploaded_file($_FILES['image_upload']['tmp_name'])) {

如果你做一个var_dump($_FILES);,你会得到一个更好的理解你正在接收的数据