我是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);
答案 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