【问题标题】:Warning: getimagesize(): Filename cannot be empty php警告:getimagesize():文件名不能为空 php
【发布时间】:2014-01-31 16:05:21
【问题描述】:

我曾问过这个问题,发现 PHP 配置将我的上传限制为 2MB,因此我将其固定为 3MB。但是,我现在有另一个问题:我也在检查图像尺寸,如果图像看起来超过 3MB,它就会失败,抛出以下错误。那么我怎样才能停止错误并自己检查大小而不是 PHP 配置呢?

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

代码如下:

$size = $_FILES['image']['size'];
list($width, $height) = getimagesize($_FILES['image']['tmp_name']);
$minh = 400;
$minw = 600;
$one_MB = 1024*1024; //1MB
if($size > ($one_MB*3))// this is not checking the size at all, the last echo is what I get if I try to upload over 3mb.
{
  echo"File exceeds 3MB";
}
elseif ($width < $minw ) {
  echo "Image width shouldn't be less than 600px";
}
elseif ($height <  $minh){
  echo "Image height shouldn't be less than 400px";
}
else{
  if (move_uploaded_file($_FILES['image']['tmp_name'], $new_location)){
    //do something
  } 
  else{
    echo "Image is too big, try uploading below 3MB";
  }
}

【问题讨论】:

    标签: php


    【解决方案1】:

    看起来上传在某些时候出错了。尝试在 getimagesize() 之前添加一些错误处理:

    if (!file_exists($_FILES['image']['tmp_name'])) {
        echo "File upload failed. ";
        if (isset($_FILES['upfile']['error'])) {
             echo "Error code: ".$_FILES['upfile']['error'];
        }
        exit;
    }
    

    很难说为什么会失败,因为涉及到很多参数。错误代码可能会给你一个提示。

    否则可能从这里开始阅读:http://de2.php.net/manual/en/features.file-upload.php

    【讨论】:

    • 我已经用 1.5mb 尝试了相同的图像并且它可以工作,当我尝试 3.5mb 时它失败了,所以它失败的原因是因为图像大小。我不明白为什么第一个if 语句不检查文件大小并让执行继续。我会试试你的建议。
    • 您应该在调用 get_image_size()之前检查文件大小。在您进行任何错误处理之前,您的脚本已失败。
    【解决方案2】:

    我也遇到了同样的错误,转到 php.ini 并转到第 800 行“upload_max_filesize”。 选择您的最大上传文件大小,我将我的设置为 4M,在我的实际网站代码中,我不允许 3mb 之后的任何内容。 出于某种原因,让它们的大小相同是行不通的,PHP.ini 需要至少比您允许上传的大小大 1mb。

    【讨论】:

      猜你喜欢
      • 2013-03-19
      • 1970-01-01
      • 2015-01-21
      • 2013-07-12
      • 2017-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多