前端下载文件大概有以下种:

1)a标签链接下载

<a href="url">点击链接下载</a>

2)表单form提交下载

var form = $("<form></form>").attr("action", url).attr("method", "post");
form.append($("<input></input>").attr("type", "hidden").attr("name", "参数1").attr("value", "值1"));
form.append($("<input></input>").attr("type", "hidden").attr("name", "参数2").attr("value", "值2"));
form.appendTo('body').submit().remove();
//url为请求地址

3)使用XMLHttpRequest对象下载

var xhr = new XMLHttpRequest();
var formData = new FormData();
formData.append('参数1', "值1");
formData.append('参数2',"值2");
xhr.open('POST', url, true);
xhr.setRequestHeader("token", token); //可以带请求头
xhr.responseType = 'blob';
xhr.onload = function (e) {
if (this.status == 200) {
var blob = this.response;
//var responseHeaders = xhr.getAllResponseHeaders();
//var ContentDisposition = this.getResponseHeader("Content-Disposition");
//var filename = this.getResponseHeader("Content-Disposition").split('filename=')[1];
// 获取文件名,需要在后端响应头暴露("Access-Control-Expose-Headers", "Content-Disposition"); var filename = "xxxx.xxx";
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob, filename);
} else { blob.type = "application/octet-stream";
var url = URL.createObjectURL(blob);
var a = document.createElement('a');
a.href = url;
a.download = filename;
a.click();
window.URL.revokeObjectURL(url); }
}else if(this.status == 404){
alert("file does not exist!");
}else{
alert("failed to download file! ");
} };
xhr.send(formData);

最新文章

  1. iOS APP 如何做才安全
  2. 执行mvn 报错 source-1.5 中不支持 diamond运算符
  3. Eclipse下使用SVN版本控制
  4. BZOJ 1468 &amp; 点分治
  5. kwm备忘
  6. 通过telnet连接查看memcache服务器(转)
  7. 用Processon在线绘制UML的尝试
  8. 文成小盆友python-num14 - web 前端基础 html ,css, JavaScript
  9. [置顶] IOS培训资料
  10. IIS - HTTP 错误 500.21 - Internal Server Error 处理程序“WebServiceHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
  11. CENTOS安装部署zabbix
  12. 201521123068 《java程序设计》 第11周学习总结
  13. 【译】10分钟学会Pandas
  14. canvas画一个时钟
  15. 解决[babel] note:the code generator has deoptimised the styling...
  16. WebService简单介绍(一)
  17. linux 扩展根分区
  18. openresty 集成lua-resty-mail +smtp2http 扩展灵活的mail 服务
  19. CentOS下 RabbitMQ单机安装配置
  20. [py]django第三方分页器django-pure-pagination实战

热门文章

  1. Java课程作业之动手动脑(二)
  2. 《GPU高性能编程CUDA实战》第三章 CUDA设备相关
  3. php 目录
  4. php单图片上传。
  5. oracle的备份与恢复
  6. 深度学习原理与框架-卷积网络细节-经典网络架构 1.AlexNet 2.VGG
  7. centos7 操作记录
  8. Redis-Desktop-Manager的下载与使用
  9. Oracle 学习总结 - 表和索引的性能优化
  10. jquery接触初级----jquery 对象和Dom对象