通过接口下载文件,在当前页面下载各种格式的文件

【背 景】 一般我们想下载.txt .html等等属于文本类型的文件,可以通过a标签的“download”属性来直接下载到本地。但是当遇到png等图片类型和MP4等视频类型的文件时,浏览器会默认打开一个新页面然后展示图片或视频类容,并不会直接下载到本地。如下:

<a href="http://wx1.sinaimg.cn/large/aabb125aly1fjotz5bfbsj20dw0dwjsv.jpg'' download='myPicture.jpg'>


【实 现】这里有两种实现支持所有类型文件下载的方法:

方法一: 后台给我们直接返回url时,我们可以采用window.open( rul ) 的形式下载,如下写法:

window.open("http://wx1.sinaimg.cn/large/aabb125aly1fjotz5bfbsj20dw0dwjsv.jpg'")

这种写法浏览器会打开新的标签页,然后再下载到本地。


方法二: 后台给我们的是文件下载接口时,就采用form表弟的提交功能,代码如下:

var id = '666';

try {

        const eleForm = document.createElement("form");//创建form

        eleForm.setAttribute("method", "get");

        eleForm.setAttribute(

          "action",

          "/api/file/download" + id

        );

        document.getElementsByTagName("body")[0].appendChild(eleForm);

        eleForm.submit();

        eleForm.remove();// 移除form

      } catch (e) {

        window.open("/api/file/download" + id);

      }

通过接口下载文件,可以实现在当前页面下载各种格式的文件!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,770评论 1 45
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,655评论 8 265
  • 文/愚叟艾思(衡阳) 诗传道义观今古,曲颂文明翰墨香。 海阔风轻鱼眷恋,天高云淡鸟飞翔。 选留名句含深意,化作新声...
    艾思阅读 557评论 7 24
  • 昨天是国庆假期的最后一天,儿子国庆节完成一道菜的作业还未做,小家伙很积极,说是要做香葱鸡蛋饼,也是平时他最...
    清言华语阅读 285评论 0 0
  • 回到现实 “别的就不说了,我认为我们的智力测试肯定达不到130啊。别想些有的没的了。”天宇摇着头,说玉必实在是杞人...
    花京体验阅读 256评论 0 0