当前位置:   article > 正文

如何使用a标签或者按钮点击下载文件_a标签下载文件

a标签下载文件

提示:本地服务点击只进行了跳转没有下载的情况,大多数是因为链接不同源。

本人在做一个项目管理系统时需求点击按钮下载文件,测试多种方法下载出来的文件都是损坏。查询多个文章,找到在我使用时的具体的bug问题。(如果不是新手可直接跳转到问题解决模块)


一、a标签

<a> 标签定义超链接,用于从一个页面链接到另一个页面。

<a> 元素最重要的属性是 href 属性,它指定链接的目标。

二、a标签的使用

1.元素中使用

<a href="链接地址"></a>

使用a标签下载文件的方法

<a :href="链接地址" target="downloadFile" download>文件名</a>

2.动态添加a标签下载(js中)

  1. let url = 链接地址;
  2. downloadFile(url)
  3. function downloadFile(url) {
  4. //下载文件
  5. console.log(url)
  6. let a = document.createElement("a");
  7. a.setAttribute("href", url);
  8. a.setAttribute("download", 文件名);
  9. a.setAttribute("target", "_blank");
  10. let clickEvent = document.createEvent("MouseEvents");
  11. clickEvent.initEvent("click", true, true);
  12. a.dispatchEvent(clickEvent);
  13. }

三、问题解决

使用上述的方法可能会出现文件跳转链接展示但是没有下载的问题。这里提供两个我找到的解决方法。

1.在链接地址后拼接'?response-content-type=application/octet-stream'

  1. let url = 链接地址 + '?response-content-type=application/octet-stream';
  2. downloadFile(url)
  3. function downloadFile(url) {
  4. //下载文件
  5. console.log(url)
  6. let a = document.createElement("a");
  7. a.setAttribute("href", url);
  8. a.setAttribute("download", 文件名);
  9. a.setAttribute("target", "_blank");
  10. let clickEvent = document.createEvent("MouseEvents");
  11. clickEvent.initEvent("click", true, true);
  12. a.dispatchEvent(clickEvent);
  13. }

2.在进行拼接后还是只跳转不下载

这种情况主要是因为现在浏览器的文件下载规则问题,新版的浏览器像Google浏览器之类下载文件是需要网页和文件地址是同源的。如果不同源的话只会打开而不会下载。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/63607
推荐阅读
相关标签
  

闽ICP备14008679号