在php下载图像代码

时间:2013-02-07 06:47:06

标签: php image curl

我是php的新手,希望编写一个下载代码,允许用户下载图像。意思是我给了一个下载链接,点击服务器上的图像应该开始下载。我尝试了各种选择,如fopen,curl等,但无济于事。使用curl时图像下载但不会在下载的地方打开。它给出了“无法读取文件头!未知文件格式”的错误。请帮助我使用的卷曲代码:

function DownloadImageFromUrl($imagepath)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch,CURLOPT_URL, $imagepath);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result=curl_exec($ch);
curl_close($ch);
return $result;
}

$imagecontent =DownloadImageFromUrl("http://www.xyz.com/back_img.png");
$savefile = fopen('myimage.png', 'w');
fwrite($savefile, $imagecontent);
fclose($savefile);

4 个答案:

答案 0 :(得分:2)

您应该为此

使用http标头
header('Content-Type: "'.$mime.'"');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header("Content-Transfer-Encoding: binary");
header('Expires: 0');
header('Pragma: no-cache');
header("Content-Length: ".strlen($data));
exit($data);

mime - 图像的MIME类型

filename - 下载文件的名称

数据 - 文件。您可以使用以下方式从其他服务器获取图像:

$data = file_get_contents('http://www.xyz.com/back_img.png')

答案 1 :(得分:1)

试试这个

$imagecontent =DownloadImageFromUrl("http://www.xyz.com/back_img.png");
$savefile = fopen('myimage.png', 'r');
fread($savefile, $imagecontent);
fclose($savefile);

答案 2 :(得分:0)

function downloadFile ($url, $path) {

  $newfname = $path;
  $file = fopen ($url, "rb");
  if ($file) {
    $newf = fopen ($newfname, "wb");

    if ($newf)
    while(!feof($file)) {
      fwrite($newf, fread($file, 1024 * 8 ), 1024 * 8 );
    }
  }

  if ($file) {
    fclose($file);
  }

  if ($newf) {
    fclose($newf);
  }
 }

downloadFile ("http://www.site.com/image.jpg", "images/name.jpg");

答案 3 :(得分:0)

您需要添加header()方法才能将其作为可下载项目打开。

header("Content-Type: application/force-download"); 
header("Content-Disposition: attachment; filename=\"".basename($fullPath)."\";" ); 

其中

$fullPath是图片路径。

有关更多规格,请参阅 - header in php