Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

请问一下上传图片的请求头怎么配置?我们项目请求需要传token #78

Open
gy-l opened this issue Dec 28, 2018 · 3 comments

Comments

@gy-l
Copy link

gy-l commented Dec 28, 2018

请问一下上传图片的请求头怎么配置?我们项目请求需要传token,按一般的设置请求头的方法是无效的。
image:{
uploader:{
url:baseURL + "/bms/img_upload",
name:"file",
// headers:'Bearer ' + token,
// 这种无效
headers: (xhr) => {
xhr.setRequestHeader('Authorization','Bearer ' + token);
},
// 这种也无效
response: (res) => {
console.log(res);
return res.data
},
filter:(res)=> {
console.log(res);
}
}
}

@liuhong1happy
Copy link
Owner

暂不支持自定义header,你需要自定义customUploader

@gy-l
Copy link
Author

gy-l commented Dec 29, 2018

暂不支持自定义header,你需要自定义customUploader

我自定义了customUploader,并且已经能成功打印出来,但是并没有生效。

customUploader.js如下:

import {getToken} from '@/utils/token';

const token = getToken();

var getError = function getError(options, xhr) {
var msg = 'cannot post ' + options.url + ":" + xhr.status;
var err = new Error(msg);
err.status = xhr.status;
err.method = 'post';
err.url = options.url;
return err;
};
var getBody = function getBody(xhr) {
var text = xhr.responseText || xhr.response;
if (!text) {
return text;
}

try {
    return JSON.parse(text);
} catch (e) {
    return text;
}

};
var Uploader = {
post: function post(options) {
if (typeof XMLHttpRequest === 'undefined') {
return;
}

    var xhr = new XMLHttpRequest();
    if (xhr.upload) {
        xhr.upload.onprogress = function (e) {
            if (e.total > 0) {
                e.percent = e.loaded / e.total * 100;
            }
            options.onLoad(e);
        };
    }
    var formData = new FormData();

    if (options.data) {
        for (var i in options.data) {
            formData.append(i, options.data[i]);
        }
    }
    formData.append(options.filename, options.file);

    xhr.onerror = function (e) {
        options.onEnd(e);
        options.onError(e);
    };
    xhr.onload = function (e) {
        if (xhr.status !== 200) {
            options.onEnd(e);
            return options.onError(getError(options, xhr), getBody(xhr));
        }
        options.onEnd(e);
        options.onSuccess(getBody(xhr));
    };

    xhr.open('post', options.url, true);
    xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    xhr.setRequestHeader('Authorization','Bearer ' + token);
    xhr.send(formData);
}

};

export default{
uploadFile: function uploadFile(options) {
options.url = options.url || "/upload";
options.filename = options.filename || "file";
options.beforeUpload = options.beforeUpload || function (e) {
return true;
};
console.log(token);
options.onSuccess = options.onSuccess || function (e) {};
options.onError = options.onError || function (e) {};
options.onLoad = options.onLoad || function (e) {};
options.onStart = options.onStart || function (e) {};
options.onEnd = options.onEnd || function (e) {};

    if (options.beforeUpload(options)) {
        options.onStart(options);
        // 开始上传文件
        Uploader.post(options);
    }
},
uploadFiles: function uploadFiles(options) {}

};

下面是业务页面的调用:

getPlugins = () => {
    let o = {
        image:{
            uploader:{
                url:baseURL + "/bms/img_upload",
                name:"file",
                customUploader: uploadFile,
                filter:(res)=> {
                    console.log(res);
                }
            }
        }
    }
    console.log(o,"fffffff")
    // 这里已经成功打印出来了
    return o;
    // 但这里并无效
}

@liuhong1happy
Copy link
Owner

customUploader放置在image下边和uploader平级的。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants