有没有大神帮忙看看这段关于文件上传的代码

export var file_upload = (file, path, success,error) => {
    var domain = NORMANDY_WEBCAM_MS_DOMAIN;
    var form = new FormData();
    //form.append("source", "park");
    form.append("file", file);

    var xhr = new XMLHttpRequest();
    xhr.upload.addEventListener("progress", (data) => {
        // 上传进度
    });
    xhr.addEventListener("load", (data) => {

    });
    xhr.addEventListener("error", (data) => {
        // 上传失败
    });
    xhr.addEventListener("abort", (data) => {
        // 中断上传
    });
    xhr.onreadystatechange = function(){
        if(xhr.readyState==4) {
            if(xhr.status==413){
                alert("上传资源文件太大,服务器无法保存!");
            }else if(xhr.status==422) {
                alert("参数错误,可能文件格式错误!");
            }else if(xhr.status==400){
                alert('文件格式错误!');
                error && error();
            }else if(xhr.status <200 || xhr.status >400){
                success && success();
                console.log('111')
            }else if(xhr.status ==500){
                error && error();
            }
            else{
                // 上传成功
                //var source_url = JSON.parse(xhr.responseText).source_url;
                //success && success();
            }
        }
    }
    xhr.open("POST", `${domain}${path}`);
    xhr.send(form);
}

我是这样调用的

file_upload(this.file_obj,'/blackwhitelist/importwhite', ()=> {
                console.log('成功导入文件!');
                this.getAllMembers();
            }, ()=>{
                console.log('文件格式错误')
            });

但是请求500报错的时候控制台显示'成功导入文件';
我这段代码哪里错了呀

阅读 2k
1 个回答

因为:

//走到这一步的时候,就因为status > 400而执行success方法了
//压根儿不会走你下面那行xhr.status ==500
}else if(xhr.status <200 || xhr.status >400){
    success && success();
    console.log('111')
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题