Web前端js下载流文件
程序员文章站
2022-04-13 15:25:27
前端下载文件大概有以下种: 1)a标签链接下载 2)表单form提交下载 3)使用XMLHttpRequest对象下载 ......
前端下载文件大概有以下种:
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);
推荐阅读
-
HTML无刷新下载文件方法总汇_html/css_WEB-ITnose
-
Node.JS段点续传:Nginx配置文件分段下载功能的实现方法_node.js
-
如何还原压缩的CSS/HTML/JS文件_html/css_WEB-ITnose
-
Web前端笔记-two.js画三角形及画tip含tip旋转
-
Web前端笔记-浏览器控制台调用js函数及vue函数
-
asp.net Web Services上传和下载文件(完整代码)第1/2页
-
SSM以流的形式实现单个文件下载时遇到文件名带中文时变成下划线解决办法
-
Web前端——表单提交和Js添加选项
-
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法
-
javascript - 微信最新的js_sdk录音下载下来的speex文件怎么解析