如何让用户下载图片(.gif,.png,.jpeg)?

时间:2012-08-20 22:53:07

标签: php javascript image file download

如何让用户下载保存在服务器上的图片?目标是让用户单击链接并指定图像以开始下载。

Facebook示例: image download

4 个答案:

答案 0 :(得分:3)

建立到另一个.php页面的链接,而不是图像。然后在该页面上使用content-disposition标头,如下所示:

<?php
// Define the name of image after downloaded  
header('Content-Disposition: attachment; filename="file.jpg"');  

// Read the original image file  
readfile('file.jpg');  
?>  

从那里,你可以在像

这样的get命令中添加图像的文件名
`download.php?filename=file` 

然后在文件中引用:

readfile($_GET['filename'].'.jpg')

答案 1 :(得分:2)

您需要在传递图像的响应上设置特定标头,以强制下载。

Content-Disposition: attachment; filename=myawesomefilename.png

否则它只会在浏览器中加载。

因此,发送该标头,然后只链接到使用该标头传递该图像的路径。

答案 2 :(得分:1)

发送标题告诉浏览器下载如下:

header("Content-type: application/force-download")

然后向他们发送文件本身的数据,不带任何HTML或任何内容。

此示例是从PHP docs

剪切的
<?php
$file = 'monkey.gif';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
}
?>

答案 3 :(得分:1)

如果通过“下载保存在服务器上的图片”,您的意思是“尝试让浏览器提供'另存为'对话框而不是仅显示图片”,那么您可能需要考虑使用Content-Disposition: attachment提供图像的响应中的标题:

Content-Disposition: attachment; filename="thefilename.jpg"

您可以使用header function在PHP中设置标题。