通过单击“下载”按钮直接下载图像

时间:2011-12-20 19:35:57

标签: javascript jquery ajax

我想为我的网站创建壁纸页面。我希望人们可以直接点击下载按钮下载,而不是浏览器中的图像视图,用户右键单击,然后另存为图像。有没有java脚本的解决方案?

3 个答案:

答案 0 :(得分:2)

您需要强制服务器发送的图像的内容类型。没有办法做这个客户端。

Content-Type: application/octet-stream
Content-Disposition: attachment;filename=myimage.png

答案 1 :(得分:2)

您可以通过PHP(或其他服务器端语言)脚本强制下载,如下所示:

$file = $_GET['file'];
header('Content-Description: File Transfer');
header("Content-type: application/octet-stream");//notice this content-type, it will force a download since browsers think that's what they should do with .exe files
header("Content-disposition: attachment; filename= ".$file."");
readfile($file);

然后在您的JavaScript代码中,您可以将用户填充到此脚本,并使用JavaScript填充GET变量file

$('a.download_link').on('click', function (event) {
    event.preventDefault();//prevent the normal click action from occuring
    window.location = '/path/to/server-side.php?file=' + encodeURIComponent(this.href);
});

这将为具有click类的任何链接添加.download_link事件处理程序,以将浏览器定向到上面的PHP脚本以强制下载。

答案 2 :(得分:-1)

只需使用您在单击按钮时设置源属性的隐藏iframe。

HTML

<input class="download" href="http://site.com/imageHandler.ashx" value="Download"/>
的Javascript
$("input.download").click(function() { $("iframeID").attr("src", $(this).attr("href")); });

您还需要使用自定义图像处理程序设置内容类型(您正在使用的服务器端语言