【发布时间】:2012-05-16 01:17:55
【问题描述】:
当您点击图片时,您如何实际下载图片?是否有某种 javascript 代码可以做到这一点?这是我使用纯 HTML 显示图像的方式。
<a href="#"><img src="myPic.png" border="0"></a>
【问题讨论】:
当您点击图片时,您如何实际下载图片?是否有某种 javascript 代码可以做到这一点?这是我使用纯 HTML 显示图像的方式。
<a href="#"><img src="myPic.png" border="0"></a>
【问题讨论】:
假设“下载”是指“导致用户的浏览器弹出‘保存或打开’对话框”——你不能。
您可以链接到提供相同文件但使用the Content-Disposition header set to attachment 的另一个URL。您将如何在该 URL 上提供此类资源的具体方式取决于提供给您的服务器端功能。
【讨论】:
大多数人右键单击图像并选择“将图像另存为...”
另一种方法是链接以使用设置“Content-type”和“Content-disposition”标头的服务器端脚本。在 PHP 中,这将类似于来自 the docs 的这个示例:
header('Content-Type: image/png'); // or 'image/jpg' or 'image/gif'
header('Content-Disposition: attachment; filename="filename.png"');
readfile('original.png');
更新:既然你说图像首先是由 PHP 脚本生成的,那么有几个选项:
readfile。这意味着任何点击下载的人都会受到双重处理。readfile。mode=download,然后在您将要输出图像的位置(如果存在该参数)设置上面的这两个标头。【讨论】:
我稍微骗了一点——我把图片压缩并放在某个地方。然后,我没有使用花哨的脚本或服务器端的东西,而是将图片的链接设置为 .zip 文件的位置。用户会收到警告/询问他们是否要下载此 zip,然后瞧……
但这通常是在用户是想要图像的人的区域......
【讨论】:
您想在新窗口/标签中打开图片吗?还是要将其下载到用户计算机?如果您希望用户保存图像,那么您需要设置他们收到的文件的内容类型:
<?php
$file = $_GET['file'];
header("Content-Type: application/octet-stream; ");
header("Content-Transfer-Encoding: binary");
header('Content-Disposition: attachment; filename="'.basename($file).'"');
readfile($file);
?>
记得检查输入,这样人们就无法下载源文件。
【讨论】: