|
@@ -4,7 +4,7 @@
|
|
|
:multiple="false"
|
|
|
:limit="1"
|
|
|
:accept="api.accept.value"
|
|
|
- :show-file-list="false"
|
|
|
+ :show-file-list="true"
|
|
|
:http-request="() => {}"
|
|
|
:file-list="api.fileList.value"
|
|
|
:disable="api.percentage.value || disabled"
|
|
@@ -57,15 +57,23 @@ type Init = {
|
|
|
};
|
|
|
|
|
|
const getFileMd5 = (file: File) => {
|
|
|
- const fileReader = new FileReader();
|
|
|
- fileReader.readAsBinaryString(file);
|
|
|
+ const str = file.name + file.size + file.lastModified.toString();
|
|
|
+ let binaryStr = "";
|
|
|
+ for (let i = 0; i < str.length; i++) {
|
|
|
+ binaryStr += str.charCodeAt(i).toString(2).padStart(8, "0");
|
|
|
+ }
|
|
|
const spark = new SparkMD5();
|
|
|
- return new Promise<string>((resolve) => {
|
|
|
- fileReader.onload = (e) => {
|
|
|
- spark.appendBinary(e.target!.result as any);
|
|
|
- resolve(spark.end());
|
|
|
- };
|
|
|
- });
|
|
|
+ spark.appendBinary(binaryStr);
|
|
|
+ return spark.end();
|
|
|
+
|
|
|
+ // const fileReader = new FileReader();
|
|
|
+ // fileReader.readAsBinaryString(file);
|
|
|
+ // return new Promise<string>((resolve) => {
|
|
|
+ // fileReader.onload = (e) => {
|
|
|
+
|
|
|
+ // resolve(spark.end());
|
|
|
+ // };
|
|
|
+ // });
|
|
|
};
|
|
|
|
|
|
const chunksUpload = async (
|
|
@@ -97,8 +105,8 @@ const chunksUpload = async (
|
|
|
const setPercentage = () => {
|
|
|
let p = 1 - chunkLen / chunkCount;
|
|
|
p += chunkProgress.reduce((t, c) => t + c / chunkLen, 0);
|
|
|
- p += merge ? 0 : -0.1;
|
|
|
- p = Math.min(1, Math.max(0, p));
|
|
|
+ p += merge ? 0 : -0.01;
|
|
|
+ p = Math.min(1, Math.max(0.01, p));
|
|
|
onPercentage(Math.ceil(p * 100));
|
|
|
uploadIngs[init.id] = p;
|
|
|
};
|
|
@@ -134,10 +142,8 @@ const chunksUpload = async (
|
|
|
i * parallelCount,
|
|
|
Math.min((i + 1) * parallelCount, chunks.length)
|
|
|
);
|
|
|
- console.log(chunkGroup);
|
|
|
await Promise.all(uploadChunks(chunkGroup, i * parallelCount));
|
|
|
}
|
|
|
- console.log(chunkProgress);
|
|
|
|
|
|
setPercentage();
|
|
|
await axios.post(mergeChunkUpload, {
|