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

时间:2015-08-29 17:44:35

标签: php

这是我的上传课程:

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():文件名在...中不能为空

     

警告:getimagesize():文件名在...中不能为空

     

警告:无法修改标头信息 - 已发送的标头   (输出开始于

在虚拟的ubuntu框中,应用程序继续,至少从Session::add('feedback_negative', $image["error"]);给我错误(找不到图像)

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

而且,我认为这是第一个if声明。

1 个答案:

答案 0 :(得分:2)

即使未选择任何文件,也始终填充

$_FILES

检查大小以查看是否确实存在文件:

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

您还可以检查文件名:

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

如果您执行var_dump($_FILES);,您将更好地了解您接收的数据。