项目中上传文件时,需在headers中带上token,但是由于一进入页面就已经upload.render,此时如果用户没有登录,token为null,上传失败。
而且由于用户在当前页面弹框登录后,页面并没有刷新,不会触发upload.render。
针对这种情况,可以通过动态添加的方式在before函数中加入以下代码,这样每次上传时,都会先给token赋值。
对于接口中需要传递的其它参数,可以放到data中,动态添加的也可以放到before函数中。
let uploadInst3 = upload.render({
elem: '#uploadId', //绑定元素
url: apiUrl, //上传接口
accept: 'file',
acceptMime: '*',
multiple: true,
exts: 'png|jpeg|pdf|jpg|doc|docx|xls|xlsx', //可选的文件类型筛选
headers: { token: window.sessionStorage.getItem('token') },
data: { type: 0 },
choose: function (obj) {
this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
},
before: function (obj) {
// 1、动态添加headers中的参数
this.headers.token= window.sessionStorage.getItem('token')
// 2、动态添加的其它参数
this.data.type= outerType
},
done: function (res, index, upload) {
delete this.files[index] //删除上次上传的文件,避免第二次上传时请求多次接口
if (res.code == 0) {} else {}
},
error: function () {}
});