Commit 4388240e authored by 以墨为白's avatar 以墨为白 🎧

大文件上传前是否有文件的判断

parent 1dd914dd
......@@ -35,13 +35,11 @@ export default {
data() {
return {
fileList: [],
headers: { 'x-requested-with': 'XMLHttpRequest' }
};
},
mounted() {
let headers_target = {
'x-requested-with': 'XMLHttpRequest'
};
headers_target[ACCESS_TOKEN] = sessionStorage.getItem("token");
this.headers[ACCESS_TOKEN] = sessionStorage.getItem("token");
var _self = this;
//必须先注销原来的,否则服务会执行多次
WebUploader.Uploader.unRegister("uploadBigFile");
......@@ -69,62 +67,33 @@ export default {
.then((val) => {
file.md5 = val;
file.uid = WebUploader.Base.guid();
// 判断文件是否上传过,是否存在分片,断点续传
// fetch(`api/rest/file/bigFile/check?fileMd5=${val}`, {
// method: "POST",
// headers: new Headers(headers_target)
// }).then(res => {
// if (res.status == 200) {
// return res.json();
// } else {
// return Promise.reject(HTTP_STATUS);
// }
// })
// .then(res => {
// if (res.code == 9000 && res.data == 1) {
// if (_self.checkFileExist) {
// return _self.checkFileExist(val);
// } else {
// return Promise.resolve(true);
// }
// } else {
// Promise.reject({message: res.code == 9000 ? res.message : "文件已存在"});
// }
// }).then(res => {
// return Promise.resolve();
// }).catch(err => {
// deferred.reject(data.message);
// });
$.ajax({
type: "POST",
url: "api/rest/file/bigFile/check",
async: false,
headers: headers_target,
data: {
fileMd5: val,
},
success: function (data) {
if (data.code == 9000) {
var resultCode = data.data;
Promise.resolve()
.then(res => {
if (_self.checkFileExist) {
return _self.checkFileExist(val);
} else {
return Promise.resolve(false);
}
}).then(res => {
if (res) {
return Promise.reject({ message: "文件已存在" });
} else {
return _self.post(`api/rest/file/bigFile/check?fileMd5=${val}`);
}
}).then(res => {
// 文件已经上传过,忽略上传过程,直接标识上传成功;
if (resultCode === -1) {
if (res === -1) {
uploader.skipFile(file);
file.pass = true;
_self.getProgressBar(file, 1);
} else {
//文件没有上传过,下标为0 文件上传中断过,返回当前已经上传到的下标
file.indexcode = resultCode;
}
} else {
deferred.reject(data.message);//触发error事件
file.indexcode = res;
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
deferred.reject(textStatus);//触发error事件
},
});
//获取文件信息后进入下一步
deferred.resolve();
}).catch(err => {
deferred.reject(err.message);//触发error事件
});
});
return deferred.promise();
},
......@@ -155,22 +124,13 @@ export default {
Promise.resolve(file.pass)
.then(res => {
if (res) {
return Promise.resolve({ code: 9000 });
} else {
return fetch(`api/rest/file/bigFile/merge?fileName=${file.name}&fileMd5=${file.md5}`, {
method: "POST",
headers: new Headers(headers_target)
}).then(res => {
if (res.status == 200) {
return res.json();
return Promise.resolve();
} else {
return Promise.reject(HTTP_STATUS);
}
});
return _self.post(`api/rest/file/bigFile/merge?fileName=${file.name}&fileMd5=${file.md5}`);
}
})
.then(res => {
if (res.code == 9000 && _self.addFileInfo) {
if (_self.addFileInfo) {
return _self.addFileInfo({
md5: file.md5,
file: {
......@@ -180,10 +140,8 @@ export default {
uuid: file.uid + "." + file.ext,
}
});
} else if (res.code == 9000) {
return Promise.resolve();
} else {
return Promise.reject(res);
return Promise.resolve(res);
}
}).then(res => {
deferred.resolve();
......@@ -226,7 +184,7 @@ export default {
data.md5 = file.md5 || "";
data.uid = file.uid;
//增加请求token
$.extend(headers, headers_target);
$.extend(headers, _self.headers);
};
// 当有文件被添加进队列的时候触发
uploader.on("fileQueued", function (file) {
......@@ -249,16 +207,6 @@ export default {
uploader.on("uploadSuccess", (file, response) => {
_self.fileList.filter(e => e.id == file.id)[0].state = 2;
_self.fileList.filter(e => e.id == file.id)[0].percentage = 100;
let param = {
md5: file.md5,
file: {
name: file.name,
size: file.size,
type: file.ext,
uuid: file.uid + "." + file.ext,
}
};
_self.$emit("Success", param);
console.log("uploadSuccess");
});
/**
......@@ -298,6 +246,29 @@ export default {
let item = this.fileList.find(e => e.id == file.id);
//在分片合并之后在设置进度百分之百
item && (item.percentage = percentage == 1 ? 99.9 : Math.floor(percentage * 100 * 100) / 100);
},
post(url) {
return new Promise((resolve, reject) => {
fetch(url, {
method: "POST",
headers: new Headers(this.headers)
}).then(res => {
if (res.status == 200) {
return res.text();
} else {
console.log(res.statusText);
reject(HTTP_STATUS);
}
}).then(res => {
let result = JSON.parse(res);
if (result.code == 9000) {
resolve(result.data);
} else {
console.log(result);
reject(result);
}
}).catch(err => reject(err));
})
}
},
};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment