下载图片OnClick

时间:2009-08-04 12:16:13

标签: html download image

点击它后如何实际下载图片?是否有某种javascript代码可以做到这一点?以下是我用纯HTML显示图像的方法。

<a href="#"><img src="myPic.png" border="0"></a>

4 个答案:

答案 0 :(得分:2)

假设“下载”是指“导致用户的浏览器抛出'保存或打开'对话框” - 你不能。

您可以链接到提供相同文件但使用the Content-Disposition header set to attachment的其他网址。您在该URL上提供此类资源的具体细节取决于您提供的服务器端功能。

答案 1 :(得分:2)

大多数人右键点击图片并选择“将图片另存为...”

替代方法是链接以使用设置“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脚本生成的,那么有几个选项:

  • 将URL(sig.php?...)作为参数添加到readfile。这意味着任何点击下载的人都可以进行双重处理。
  • 将图像生成脚本的输出缓存到文件系统,然后将该文件传递给readfile
  • 编辑图像生成脚本以接受额外参数,例如mode=download,然后输出图像,如果参数存在,请在上面设置这两个标题。

答案 2 :(得分:1)

我把它搞砸了一下 - 我将图片压缩并放在某处。然后,我没有使用花哨的脚本或服务器端的东西,而是将图片的链接作为.zip文件的位置。用户得到警告/询问他们是否要下载此邮政编码...

但这通常发生在用户想要图片的地方......

答案 3 :(得分:-2)

您想在新窗口/标签页中打开图片吗?或者您想将其下载到用户计算机?如果您希望用户保存图像,则需要设置他们收到的文件的内容类型:

<?php
$file = $_GET['file'];

header("Content-Type: application/octet-stream; ");
header("Content-Transfer-Encoding: binary"); 
header('Content-Disposition: attachment; filename="'.basename($file).'"');
readfile($file);
?>

请记得检查输入,以便人们无法下载源文件。