这是我的上传类:
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);
,你会得到一个更好的理解你正在接收的数据