1.全局导入element ui 之后,直接在页面使用
2.在data里面定义 action、headers、fileList
- fileList置空;
- header里携带token:token在登录成功之后,后端返回给前端的,可以存在localStorage、cookies、vuex状态管理,其中'Bearer '是后端要求加在token前面的(不要求就不加)
- action:上传文件的接口地址
3.上传文件成功后(handleAvatarSuccess(res,file,fileList){} :res返回的是二进制文件流)
submitUpload(){
// upload 是在<el-upload> 标签上绑定的ref
//submit() 方法把表单数据提交到 Web 服务器。
this.$refs.upload.submit();
}
4.对二进制文件流的解析下载(用new Blob() 处理文件流)
handleAvatarSuccess(res, file, fileList) {
if (!res) {
return
}
//Blob对象
console.log(new Blob([res]))
//URL.createObjectURL用于创建 URL 的 File对象、Blob对象或 MediaSource对象。
let url = window.URL.createObjectURL(new Blob([res]))
let link = document.createElement('a')
link.style.display = 'none'
link.href = url
link.setAttribute('download', file.name)
document.body.appendChild(link)
link.click()
},
Blob()
构造函数返回一个新的Blob
对象。 blob的内容由参数数组中给出的值的串联组成。- 语法:var aBlob = new Blob( array, options );
另外:可以限制上传文件的大小
beforeupload(file) {
// file.size 的结果是字节
const isLtKB = file.size / 1024
if (isLt5M < 5120)
console.log('上传成功,请耐心等待下载')
return true
} else {
console.log('请上传小于5M的文件')
return false
}
},
文件返回的是字节
1M=1024kb
1kb=1024字节