使用 javascript/ajax/jquery 强制下载 pdf 链接

新手上路,请多包涵

假设我们有一个 pdf 链接“ http://manuals.info.apple.com/en/iphone_user_guide.pdf ”(只是为了让您知道该文件不在我的服务器上,我只有链接).. .现在我必须在我的网站上提供一个按钮来下载文件。

我已经尝试过各种方法,如 window.open、href 等方法,但它会在其他窗口上打开链接。我知道那是因为现在所有浏览器都带有一个 adobe 插件,可以在另一个窗口中打开它,但仍然没有任何方法可以让用户选择下载而不是打开它,通过客户端脚本..

请帮助..谢谢

原文由 Dhananjay 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 603
2 个回答

使用 HTML5“下载”属性

<a href="iphone_user_guide.pdf" download="iPhone User's Guide.PDF">click me</a>

2021 年更新:现在所有主流浏览器都支持!请参阅: caniuse.com/#search=download

如果您需要支持旧版浏览器,或者您正在寻找 实际 的 javascript 解决方案(出于某种原因),请参阅 lajarre 的回答

原文由 Kabir Sarin 发布,翻译遵循 CC BY-SA 4.0 许可协议

这是一个 Javascript 解决方案(对于像我这样正在寻找标题答案的人):

 function SaveToDisk(fileURL, fileName) {
    // for non-IE
    if (!window.ActiveXObject) {
        var save = document.createElement('a');
        save.href = fileURL;
        save.target = '_blank';
        save.download = fileName || 'unknown';

        var evt = new MouseEvent('click', {
            'view': window,
            'bubbles': true,
            'cancelable': false
        });
        save.dispatchEvent(evt);

        (window.URL || window.webkitURL).revokeObjectURL(save.href);
    }

    // for IE < 11
    else if ( !! window.ActiveXObject && document.execCommand)     {
        var _window = window.open(fileURL, '_blank');
        _window.document.close();
        _window.document.execCommand('SaveAs', true, fileName || fileURL)
        _window.close();
    }
}

来源:http: //muaz-khan.blogspot.fr/2012/10/save-files-on-disk-using-javascript-or.html

不幸的是,这不适用于 IE11,它不接受新的 MouseEvent。在这种情况下,我使用以下内容:

 //...
try {
    var evt = new MouseEvent(...);
} catch (e) {
    window.open(fileURL, fileName);
}
//...

原文由 lajarre 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏