首页 > 解决方案 > 仅使用 JavaScript 下载文件

问题描述

要使用 JavaScript 以编程方式触发位于服务器上的文件,这就是我目前正在做的事情:

HTML

<a id="downloadPDF" href="/my.pdf" download style="display: none;">Download PDF</a>

JavaScript

<script type="text/javascript">
    document.getElementById('downloadPDF').click();
</script>

它有效,但对我来说感觉相当“hackish”。有没有更好、更直接的方法来做到这一点而不使用 HTML 和触发点击?

重要提示:没有库或数据 URI。该文件应下载打开。

标签: javascript

解决方案


这只是您在问题中提供的方法的扩展。不同之处在于此功能在后台完成所有工作。

// DL function
const download = function(file) {
  // Create a tag
  const a = document.createElement('a');
  // Set href
  a.href = file;
  // Set file name
  a.download = file.substr(file.lastIndexOf('/') + 1);
  // Append tag to body
  document.body.appendChild(a);
  // Click it
  a.click();
  // Remove
  document.body.removeChild(a);
}

// Do download
download('https://file-examples-com.github.io/uploads/2017/02/zip_2MB.zip');


推荐阅读