php下载图片不完整

时间:2022-11-10 21:07:31
写了一个简易的下载单张图片的PHP文件:
<?php 
$url = $_POST ['url'];
//$url="gallery/ddung/2.jpg";//要下载的图片链接
DownImage($url);

//下载url指向的图片
function DownImage($url) 

  $mime=getMime($url);
  header("Content-Type: ".$mime);
  $ext=getExt($url);
  header("Content-Disposition: attachment; filename=".basename($url) );
  header("Content-Transfer-Encoding: binary");
  $fp=file($url);
  foreach($fp as $fileLine) 
  {
   echo $fileLine;
}
}

//获取要下载的图片的MIME信息
function getMime($url)
{
  if(preg_match("/\.(jpg|jpeg)$/",$url))
    return "image/jpeg";
  else if(preg_match("/\.(gif)$/",$url))
    return "image/gif";
  else if(preg_match("/\.(png)$/",$url))
    return "image/png";
  else if(preg_match("/\.(bmp)$/",$url))
    return "image/bmp";
  else
    return "err";
}

//获取要下载的图片后缀名
function getExt($url) 
{
if(preg_match("/\.(jpg|jpeg)$/",$url))
    return "jpg";
  else if(preg_match("/\.(gif)$/",$url))
    return "gif";
  else if(preg_match("/\.(png)$/",$url))
    return "png";
  else if(preg_match("/\.(bmp)$/",$url))
    return "bmp";
  else
    return "err";
}
?>


提交后别人测试告诉我500k的图片只能下载200K = =
可是我没有限制下载大小啊~
请问大家可能是什么问题呢?

5 个解决方案

#1


  $fp=file($url);    
  foreach($fp as $fileLine) 
  {
          echo $fileLine;
    }



改成这样看看
echo file_get_content

还有,前面不能有输出,你的代码最前一行 <?php 前有一行空白,不知你真正里有没有

#2


读图片用file?? 原来图片也是一行一行的...

file_get_contents就行了。

#3


引用 1 楼  的回复:
  $fp=file($url);    
  foreach($fp as $fileLine) 
  {
          echo $fileLine;
    }



改成这样看看
echo file_get_content

还有,前面不能有输出,你的代码最前一行 <?php 前有一行空白,不知你真正里有没有

真正是木有的嗯~谢谢~我去试试看><

#4


引用 2 楼  的回复:
读图片用file?? 原来图片也是一行一行的...

file_get_contents就行了。


不好意思是初学者XDDDDD
我去改改试试哈~谢谢~

#5


结贴~~~另外应该是echo file_get_contents不是echo file_get_content嗯- -

#1


  $fp=file($url);    
  foreach($fp as $fileLine) 
  {
          echo $fileLine;
    }



改成这样看看
echo file_get_content

还有,前面不能有输出,你的代码最前一行 <?php 前有一行空白,不知你真正里有没有

#2


读图片用file?? 原来图片也是一行一行的...

file_get_contents就行了。

#3


引用 1 楼  的回复:
  $fp=file($url);    
  foreach($fp as $fileLine) 
  {
          echo $fileLine;
    }



改成这样看看
echo file_get_content

还有,前面不能有输出,你的代码最前一行 <?php 前有一行空白,不知你真正里有没有

真正是木有的嗯~谢谢~我去试试看><

#4


引用 2 楼  的回复:
读图片用file?? 原来图片也是一行一行的...

file_get_contents就行了。


不好意思是初学者XDDDDD
我去改改试试哈~谢谢~

#5


结贴~~~另外应该是echo file_get_contents不是echo file_get_content嗯- -