layui upload上传文件时动态设置headers参数值

项目中上传文件时,需在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 () {}
    });

 

你可能感兴趣的:(总结,upload,上传,动态,headers)