0

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

脸书示例: 图片下载

4

4 回答 4

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')
于 2012-08-20T23:00:43.080 回答
2

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

Content-Disposition: attachment; filename=myawesomefilename.png

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

因此,发送该标头,然后仅链接到使用该标头提供该图像的路径。

于 2012-08-20T22:57:33.577 回答
1

发送一个标头告诉浏览器下载它,如下所示:

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

然后将文件本身的数据发送给他们,无需任何 HTML 或任何内容。

这个例子是从PHP 文档中截取的

<?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;
}
?>
于 2012-08-20T22:56:55.953 回答
1

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

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

您可以使用标头函数在 php 中设置标头。

于 2012-08-20T23:00:01.980 回答