【问题标题】:PHP cannot upload picture width larger than 3002 x 2893 pixelsPHP 无法上传宽度大于 3002 x 2893 像素的图片
【发布时间】:2015-04-02 23:58:35
【问题描述】:

我有代码,由其他人编写,我必须修改。不会上传宽度大于 3002px 且高度大于 2893px 的文件。

我是如何测试它的:我有两张不同的图片,有两种不同的文件大小(宽度:3002 像素,高度:2009 像素)。当我将它们都设置为 3003px 宽度时,它们不会上传,但如果我将它们的宽度设置为 3002px,它们都会上传。

然后我旋转了他们没有上传的图像(宽度:2009 像素,高度:3002 像素)。然后我玩了他们的身高,发现如果我将高度设置为2893px(在这种情况下宽度将是1934px),它会上传,但如果我将高度设置为2894px,它不会。

这是我的代码:

error_reporting(0); 
$change=""; 
define ("MAX_SIZE","9999999999");

function getExtension($str) 
    { 
        $i = strrpos($str,"."); 
        if (!$i) { return ""; } 
        $l = strlen($str) - $i; 
        $ext = substr($str,$i+1,$l); 
        return $ext; 
    }
$errors=0;

if($_SERVER["REQUEST_METHOD"]=="POST") 
    { 
      $image=$_FILES["img_1"]["name"]; 
      $uploadedfile = $_FILES["img_1"]['tmp_name'];
        if ($image) 
          { 
            $filename = stripslashes($_FILES["img_1"]['name']);
            $extension = getExtension($filename); 
            $extension = strtolower($extension);
              if ( ($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) 
                {
                  $change='<div class="msgdiv">Unknown Image extension </div> '; $errors=1; 
                } 
              else 
                { 
                  if($extension=="jpg" || $extension=="jpeg" ) 
                    { 
                      $uploadedfile = $_FILES["img_1"]['tmp_name'];
                      $src = imagecreatefromjpeg($uploadedfile); 
                    } 
                  else if($extension=="png") 
                    { 
                      $uploadedfile = $_FILES["img_1"]['tmp_name'];
                      $src = imagecreatefrompng($uploadedfile); 
                    } 
                  else 
                    { 
                      $src = imagecreatefromgif($uploadedfile); 
                    } 
                echo $scr;
                list($width,$height)=getimagesize($uploadedfile);
                $newwidth=700; 
                $newheight=($height/$width)*$newwidth;
                $tmp=imagecreatetruecolor($newwidth,$newheight);
                $newwidth1=150; 
                $newheight1=($height/$width)*$newwidth1;
                $tmp1=imagecreatetruecolor($newwidth1,$newheight1);
                imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
                imagecopyresampled($tmp1,$src,0,0,0,0,$newwidth1,$newheight1,$width,$height);
                $stamp = imagecreatefrompng('img/stamp.png');
                $marge_right = 10;
                $marge_bottom = 10;
                $sx = imagesx($stamp);
                $sy = imagesy($stamp);
                imagecopy($tmp, $stamp, $newwidth - $sx - $marge_right, $newheight - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));
                $filenameb = "img_big/big_".(rand(0, 99999999))."."."$extension"; $filename1 = "img_tmb/small_".(rand(0, 99999999))."."."$extension";
                imagejpeg($tmp,$filenameb,100); 
                imagejpeg($tmp1,$filename1,100); 
                imagedestroy($src); 
                imagedestroy($tmp); 
                imagedestroy($tmp1); 
                imagedestroy($stamp);
          } 
      } 
  }
if(isset($_POST['Submit']) && !$errors) 
  { 
    $change=' <div class="msgdiv">Image Uploaded Successfully!</div>'; 
  }

$img_1b = $filenameb; 
$smollimg_1 = $filename1; 
unset($filename); 
unset($filename1);

我不知道MAX_SIZE 指的是什么。可能是代码有缺陷,可能是服务器端的问题?

【问题讨论】:

  • 您检查过upload_max_filesizepost_max_size 了吗?这些在你的php.ini
  • 我将它们设置为 128M 以测试这是否是问题。我无法上传宽度为 4000 像素、高度为 3000 像素的 110kb 文件,但我可以上传宽度为 3002 像素、高度为 2009 像素的 3.25mb 文件。
  • 还可能值得看看你的内存限制。
  • @halfer 我该怎么做?
  • @halfer 非常感谢。我增加了memory_limit,效果很好。

标签: php upload


【解决方案1】:

(代表 OP 发布。)

我增加了 memory_limit 并且它起作用了。所以如果upload_max_filesizepost_max_size都不起作用,尝试增加memory_limit

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-07
    • 2014-04-21
    • 2020-04-04
    • 2012-10-17
    • 2014-02-09
    • 2015-02-06
    • 1970-01-01
    • 2017-08-24
    相关资源
    最近更新 更多