前端实现文件下载功能

153 阅读1分钟

在很多后台管理系统里可能会有导出表格,下载表格,下载压缩包等这样的需求。下面说几种简单的下载的方法:

 

1.最简单的,有文件的地址,直接使用a标签实现下载(通用模板前端本地下载):

 

    ``<a href=``"/user/test/xxxx.xls" download=``"文件名.xls"``>点击下载</a>

 

  ``但是有个情况,比如txt,png,jpg等这些浏览器支持直接打开的文件是不会执行下载任务的,而是会直接打开文件,这个时候就需要给a标签添加一个属性“download”;

如果再vue项目中需要下载文件需要放在public文件夹下 需要下载的路径是相对于index.html文件路径 否则会提示下载文件未找到

 

2.window.open()方法,后端提供下载接口:

 

html:

 

<button type=``"button" id=``"btn1"``>window.open()方法下载</button>

 

js:

(最简单:window.location.href=``"xxxxx后端给的下载地址"``)

var $eleBtn1 = $(``"#btn1"``);

 

 

//已知一个下载文件的后端接口:

https:``//codeload.github.com/douban/douban-client/legacy.zip/master

//方法一:window.open()

$eleBtn1.click(``function``(){

    ``var url = ``"https://codeload.github.com/douban/douban-client/legacy.zip/master"``;

    ``window.open(url);

});

 

3.通过form表单提交的方式:

 

 

html:

 

<button type=``"button" id=``"btn2"``>form方法下载</button>

 

js:

 

var $eleBtn2 = $(``"#btn2"``);

 

//已知一个下载文件的后端接口:

https:``//codeload.github.com/douban/douban-client/legacy.zip/master

$eleBtn2.click(``function``(){

    ``var $eleForm = $(``"<form method='get'></form>"``);

 

    ``$eleForm.attr(``"action"``,``"https://codeload.github.com/douban/douban-client/legacy.zip/master"``);

 

    ``$(document.body).append($eleForm);

 

    ``//提交表单,实现下载

    ``$eleForm.submit();

});