提交 9dd5c3b4 authored 作者: 李忠利's avatar 李忠利

修改文件上传逻辑

上级 5ef27afe
...@@ -91,7 +91,7 @@ ...@@ -91,7 +91,7 @@
<ul class="file-list" v-show="!collapse"> <ul class="file-list" v-show="!collapse">
<li <li
class="file-item" class="file-item"
:class="{ 'custom-status-item': file.statusStr !== '' }" :class="{ 'custom-status-item': uploadStatus[file.id] !== '' }"
v-for="file in props.fileList" v-for="file in props.fileList"
:key="file.id" :key="file.id"
> >
...@@ -101,7 +101,7 @@ ...@@ -101,7 +101,7 @@
:list="true" :list="true"
></uploader-file> ></uploader-file>
<!-- 自定义状态 --> <!-- 自定义状态 -->
<span class="custom-status">{{ file.statusStr }}</span> <span class="custom-status">{{ uploadStatus[file.id] }}</span>
</li> </li>
<div class="no-file" v-if="!props.fileList.length"> <div class="no-file" v-if="!props.fileList.length">
<i class="icon-empty-file"></i> 暂无待上传文件 <i class="icon-empty-file"></i> 暂无待上传文件
...@@ -123,6 +123,7 @@ import { mapState } from "vuex"; ...@@ -123,6 +123,7 @@ import { mapState } from "vuex";
export default { export default {
data() { data() {
return { return {
uploadStatus: {},
// 上传组件配置项 // 上传组件配置项
options: { options: {
target: `${process.env.VUE_APP_BASE_API}/v1/api/folder/transfer/uploadfile`, // 上传文件-目标 URL target: `${process.env.VUE_APP_BASE_API}/v1/api/folder/transfer/uploadfile`, // 上传文件-目标 URL
...@@ -304,15 +305,16 @@ export default { ...@@ -304,15 +305,16 @@ export default {
* @param {string} response 服务端响应内容,永远都是字符串 * @param {string} response 服务端响应内容,永远都是字符串
*/ */
handleFileSuccess(rootFile, file, response) { handleFileSuccess(rootFile, file, response) {
if (response == "") { if (response == "") {
file.statusStr = "上传失败"; this.uploadStatus[file.id] = "上传失败";
this.callback(false); this.callback(false);
return; return;
} }
let result = JSON.parse(response); let result = JSON.parse(response);
if (result.success) { if (result.code===200) {
file.statusStr = ""; this.uploadStatus[file.id] = "";
if (this.filesLength === 1) { if (this.filesLength === 1) {
// 本次所有的文件均已上传完毕 // 本次所有的文件均已上传完毕
this.$message.success(`上传完毕`); this.$message.success(`上传完毕`);
...@@ -327,7 +329,7 @@ export default { ...@@ -327,7 +329,7 @@ export default {
} }
} else { } else {
this.$message.error(result.message); this.$message.error(result.message);
file.statusStr = "上传失败"; this.uploadStatus[file.id] = "上传失败";
} }
this.filesLength--; this.filesLength--;
}, },
...@@ -358,7 +360,7 @@ export default { ...@@ -358,7 +360,7 @@ export default {
let chunks = Math.ceil(file.size / chunkSize); let chunks = Math.ceil(file.size / chunkSize);
let spark = new SparkMD5.ArrayBuffer(); let spark = new SparkMD5.ArrayBuffer();
// 文件状态设为"计算MD5" // 文件状态设为"计算MD5"
file.statusStr = "计算MD5"; this.uploadStatus[file.id] = "计算MD5";
file.pause(); file.pause();
loadNext(); loadNext();
fileReader.onload = (e) => { fileReader.onload = (e) => {
...@@ -367,9 +369,10 @@ export default { ...@@ -367,9 +369,10 @@ export default {
currentChunk++; currentChunk++;
loadNext(); loadNext();
// 实时展示MD5的计算进度 // 实时展示MD5的计算进度
file.statusStr = `校验MD5 ${((currentChunk / chunks) * 100).toFixed( this.uploadStatus[file.id] = `校验MD5 ${((currentChunk / chunks) * 100).toFixed(
0 0
)}%`; )}%`;
this.uploadStatus = JSON.parse(JSON.stringify(this.uploadStatus))
} else { } else {
let md5 = spark.end(); let md5 = spark.end();
this.calculateFileMD5End(md5, file); this.calculateFileMD5End(md5, file);
...@@ -406,7 +409,8 @@ export default { ...@@ -406,7 +409,8 @@ export default {
file.uniqueIdentifier = md5; file.uniqueIdentifier = md5;
file.resume(); file.resume();
// 移除自定义状态 // 移除自定义状态
file.statusStr = ""; this.uploadStatus[file.id] = ''
this.uploadStatus = JSON.parse(JSON.stringify(this.uploadStatus))
}, },
/** /**
* 关闭上传面板,并停止上传 * 关闭上传面板,并停止上传
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论