【问题标题】:.PDF and .JPG assets not downloading with JavaScript?.PDF 和 .JPG 资产不使用 JavaScript 下载?
【发布时间】:2016-12-19 20:28:08
【问题描述】:

我希望通过 JavaScript 在我的网站上下载资产。这是我目前拥有的代码:

//Creates an iFrame and adds ID to it to download
var downloadURL = function downloadURL(url) {
    var hiddenIFrameID = 'hiddenDownloader',
        iframe = document.getElementById(hiddenIFrameID);
    if (iframe === null) {
        iframe = document.createElement('iframe');
        iframe.id = hiddenIFrameID;
        iframe.style.display = 'none';
        document.body.appendChild(iframe);
    }
    iframe.src = url;
};

如果没有 iframe,这将创建一个 iframe,为 iFrame 提供“hiddenIFrameID”的 ID 并在客户端下载它。这目前正在下载 .psd 和 .ai 文件,但在调用下载 .jpg 或 .pdf 文件时无法解释该文件。有什么建议吗?这是我的 HTML 的结构:

<a onclick="downloadURL('imagepath.jpg');">Download</a>

【问题讨论】:

  • 如果浏览器可以渲染它们,它可能只会显示 iframe 中的文件。这不会发生在 PSD 或 AI 文件中。
  • 您需要访问服务器端才能更改文件的标题。
  • 没有服务器,都是本地的(file://)

标签: javascript webclient client-side-scripting


【解决方案1】:

强制下载某些文件(例如图像、PDF 等),而不是仅由浏览器渲染/显示:

  1. 要么更改服务器端。该文件应附有Content-Disposition: attachment 标头。例如,这可以通过 .htaccess 文件来完成。

  2. 或者使用链接的download 属性。例如,&lt;a href="imagepath.jpg" download&gt;Download&lt;/a&gt;

    • 您甚至可以通过创建隐藏链接并调用其click() 方法从脚本中启动下载。

【讨论】:

  • 有没有对 cro-bro 更友好的东西?我没有使用服务器
  • @KristinaRobinson,它是 HTML5,它应该适用于所有现代浏览器。
  • (@KristinaRobinson,哎呀,我看到 Safari(和 MSIE
  • @KristinaRobinson,你没有使用服务器是什么意思? HTTP 总是使用服务器。或者,您是否通过“文件:”方案从本地计算机访问 HTML?
  • 目前一切都是本地的,我们正在努力避免使用服务器
猜你喜欢
  • 2018-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-06
  • 2019-01-16
  • 2012-05-18
  • 2015-08-22
  • 1970-01-01
相关资源
最近更新 更多