javascript - 仅使用 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。该文件应下载未打开。
解决方案
这只是您在问题中提供的方法的扩展。不同之处在于此功能在后台完成所有工作。
// 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');
推荐阅读
- dask - 使用 dask.delayed 实现递归函数
- ssl - 有没有办法强制 WSO2 API Manager 接受不受信任的证书?
- nginx - Nginx 重定向到 nginx 的根目录
- java - 抽象类比 Java 中的接口快吗?
- inno-setup - 在 Pascal 脚本代码中使用带引号/撇号的 Inno Setup 预处理器变量值
- javascript - 在 Asp.net Core 中显示模态消息
- sql-server - TSQL 产生特定数量的列
- user-interface - 更改Gitlab登录页面背景
- reactjs - Firebase Admin SDK verifySessionCookie 不对 Firebase 存储用户进行身份验证
- list - 如何加载一长串项目并在 React Native 中搜索?