如何允许用户下载保存在服务器上的图片?目标是让用户单击链接并获得指定的图像以开始下载。
脸书示例:
使链接到另一个 .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')
您需要在提供图像的响应上设置特定标头以强制下载。
Content-Disposition: attachment; filename=myawesomefilename.png
否则它只会在浏览器中加载。
因此,发送该标头,然后仅链接到使用该标头提供该图像的路径。
发送一个标头告诉浏览器下载它,如下所示:
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;
}
?>
如果“下载保存在服务器上的图片”是指“尝试让浏览器提供一个“另存为”对话框,而不仅仅是显示图像”,那么您可能需要考虑使用Content-Disposition: 附件标题服务于图像的响应:
Content-Disposition: attachment; filename="thefilename.jpg"
您可以使用标头函数在 php 中设置标头。