4

好的,有一个与这个完全相同的问题,但已经有 2 年了,只有一个答案不是真正的解决方案。

所以,我有一个图像(缩略图),它的正下方有 2 个按钮:ViewDownload.

View 将在浏览器中打开图像(缓存)。下载按钮将打开保存图像对话框。

现在我正在使用 PHP 的标题Content-Disposition: attachment;作为下载按钮。

通常,访问者会先点击View按钮进行预览(缩略图不是解决方案,因为需要验证细节和质量),尤其是对于我自己的应用程序。

现在,我真的不希望通过 PHP 再次读取该文件,因为这需要时间。而为了更好的用户体验,是否可以模拟“右击图片->图片另存为”弹出下载对话框,访问者只需单击一下即可下载?

4

4 回答 4

0

不,这是不可能的。您必须触发一个新请求并使用 http 标头强制下载,就像您目前正在做的那样。

于 2012-11-29T02:24:32.483 回答
0

根据文档对象的技术规范,没有任何方法可以让您通过 JavaScript 强制下载文档/文件/资源​​。

于 2014-10-14T03:14:04.480 回答
-1

尝试使用oncontextmenu这样的事件的想法:

HTML:

<div id="image">
YOUR IMAGE
</div>

<div id="contextmenu" style="display: none">
<ul>
    <li>YOUR LINK TO DOWNLOAD IMAGE</li>
</ul>
</div>​

使用 jQuery 的脚本:

var img = document.getElementById("image");
img.oncontextmenu = function(e){
    e.preventDefault();

    contextmenu = $("#contextmenu");
    contextmenu.css("top",(e.pageY) + "px")
        .css("z-index","9999")
        .css("left",(e.pageX) + "px");

    contextmenu.fadeIn('fast');    
    return false;
};

$("#image").click(function(){
    $("#contextmenu").hide();
});

​ CSS:

#image {
    width: 300px;
    height: 300px;
    background: rgba(0, 0, 0, 0.2);
}
#contextmenu{
    position:fixed;
    background: white;
}

​我还在这里为演示http://jsfiddle.net/aanred/75xaU/创建小提琴。希望能帮助到你。

于 2012-11-29T02:35:06.587 回答
-1

尝试这个

<a href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA......" download="save-name.jpg">Click me to download the img</a>
于 2013-09-11T01:58:22.140 回答