发布网友 发布时间:2022-04-26 09:33
共3个回答
热心网友 时间:2022-04-27 00:28
1、简单的AF就有上传的方法
2、上传文件可以用multipart-formdata格式上传,具体看后台接口的配置。这个格式的使用。这是我写的一篇测试,根据微博的一个开放接口测试这种格式的使用。
热心网友 时间:2022-04-27 01:46
let blob = new Blob([data], {
type: 'application/octet-stream'
});// 转化为blob对象
let filename = fileName || 'filename.xls';// 判断是否使用默认文件名
if (typeof window.navigator.msSaveBlob !== 'undefined') {
window.navigator.msSaveBlob(blob, filename);
} else {
var blobURL = window.URL.createObjectURL(blob);// 将blob对象转为一个URL
var tempLink = document.createElement('a');// 创建一个a标签
tempLink.style.display = 'none';
tempLink.href = blobURL;
tempLink.setAttribute('download', filename);// 给a标签添加下载属性
if (typeof tempLink.download === 'undefined') {
tempLink.setAttribute('target', '_blank');
}
document.body.appendChild(tempLink);// 将a标签添加到body当中
tempLink.click();// 启动下载
document.body.removeChild(tempLink);// 下载完毕删除a标签
window.URL.revokeObjectURL(blobURL);
}
上方为下载Excel文件的一个核心逻辑,需要你自己构建一个函数,将上方代码放入,下面是原理:
1、获取后端传递来的二进制数据流
2、传递到封装的函数当中,需要传递二进制数据和文件名(不传有默认文件名)
3、将二进制数据流包裹成一个new Blob对象
4、将Blob对象转化为一个URL资源地址,这个地址时一个本地地址
5、创建一个a标签,设置隐藏,添加下载属性,添加到body当中,启动下载
6、下载完毕之后,删除a标签
注意事项:
在vue框架当中,数据请求是借助axios的,为此,在发送请求的时候,需要修改responseType,改为arraybuffer,axios默认情况下responseType为json,若是不修改,很可能下载时候会是乱码,或者为null。
---------------------
作者:wxj_web
来源:CSDN
原文:https://blog.csdn.net/wxj_ios/article/details/85004323
版权声明:本文为博主原创文章,转载请附上博文链接!