|
@@ -14,7 +14,7 @@ import { Constants } from '../../Constants';
|
|
|
import Logger from './Logger';
|
|
import Logger from './Logger';
|
|
|
import { buffer } from '@kit.ArkTS';
|
|
import { buffer } from '@kit.ArkTS';
|
|
|
import { CommonConstants } from '../constants/CommonConstants';
|
|
import { CommonConstants } from '../constants/CommonConstants';
|
|
|
-import { GlobalContext, PreferencesUtil } from '@pura/harmony-utils';
|
|
|
|
|
|
|
+import { GlobalContext, MD5, PreferencesUtil } from '@pura/harmony-utils';
|
|
|
import { MusicInfo, parseMusicFileName, Utility } from './Utility';
|
|
import { MusicInfo, parseMusicFileName, Utility } from './Utility';
|
|
|
import { RemoteDriveType } from '../enums/RemoteDriveType';
|
|
import { RemoteDriveType } from '../enums/RemoteDriveType';
|
|
|
import { createSmbDirectory, deleteSmbEntry, listSmbDirectory, SmbDirectoryEntry } from '../network/SmbBridge';
|
|
import { createSmbDirectory, deleteSmbEntry, listSmbDirectory, SmbDirectoryEntry } from '../network/SmbBridge';
|
|
@@ -89,7 +89,10 @@ async function executeBaiduUpload(params: TaskBaiduUploadParams): Promise<TaskBa
|
|
|
const end = Math.min(start + PART_SIZE, fileSize);
|
|
const end = Math.min(start + PART_SIZE, fileSize);
|
|
|
const partData = fileData.slice(start, end);
|
|
const partData = fileData.slice(start, end);
|
|
|
// 使用导入的MD5计算函数
|
|
// 使用导入的MD5计算函数
|
|
|
- const md5 = await simpleCalculateMD5(partData);
|
|
|
|
|
|
|
+ // const md5 = await simpleCalculateMD5(partData);
|
|
|
|
|
+ let decoder = util.TextDecoder.create('utf-8');
|
|
|
|
|
+ const str = decoder.decodeToString(new Uint8Array(partData));
|
|
|
|
|
+ const md5 = await MD5.digestSync(str)
|
|
|
blockMd5List.push(md5);
|
|
blockMd5List.push(md5);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -110,29 +113,27 @@ async function executeBaiduUpload(params: TaskBaiduUploadParams): Promise<TaskBa
|
|
|
if (!precreateResponse.uploadid) {
|
|
if (!precreateResponse.uploadid) {
|
|
|
throw new Error('预上传失败:未获取到uploadid');
|
|
throw new Error('预上传失败:未获取到uploadid');
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+ console.info(`heanup 预上传成功,uploadid: ${JSON.stringify(precreateResponse)}`);
|
|
|
// 5. 分片上传
|
|
// 5. 分片上传
|
|
|
const partsToUpload = precreateResponse.block_list || [];
|
|
const partsToUpload = precreateResponse.block_list || [];
|
|
|
- Logger.info(`预上传返回block_list: ${JSON.stringify(partsToUpload)}, errno: ${precreateResponse.errno}`);
|
|
|
|
|
|
|
+ Logger.info(`heanup 预上传返回block_list: ${JSON.stringify(partsToUpload)}, errno: ${precreateResponse.errno}`);
|
|
|
|
|
|
|
|
// 如果block_list为空,说明所有分片都已存在,直接跳过分片上传
|
|
// 如果block_list为空,说明所有分片都已存在,直接跳过分片上传
|
|
|
- if (partsToUpload.length === 0) {
|
|
|
|
|
- Logger.info( `所有分片已存在,跳过分片上传阶段`);
|
|
|
|
|
- } else {
|
|
|
|
|
- Logger.info( `需要上传的分片列表: ${JSON.stringify(partsToUpload)}, 总计${partsToUpload.length}个分片`);
|
|
|
|
|
|
|
|
|
|
- for (let i = 0; i < partsToUpload.length; i++) {
|
|
|
|
|
- const partSeq = partsToUpload[i];
|
|
|
|
|
- const start = partSeq * PART_SIZE;
|
|
|
|
|
- const end = Math.min(start + PART_SIZE, fileSize);
|
|
|
|
|
- const partData = fileData.slice(start, end);
|
|
|
|
|
|
|
+ Logger.info( `heanup 需要上传的分片列表: ${JSON.stringify(partsToUpload)}, 总计${partsToUpload.length}个分片`);
|
|
|
|
|
|
|
|
- Logger.info( `开始上传分片${partSeq}, 大小: ${partData.byteLength}字节`);
|
|
|
|
|
- await simpleUploadFilePart(accessToken, remotePath, precreateResponse.uploadid!, partSeq, partData);
|
|
|
|
|
- Logger.info(`分片${partSeq}上传完成`);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ for (let i = 0; i < partsToUpload.length; i++) {
|
|
|
|
|
+ const partSeq = partsToUpload[i];
|
|
|
|
|
+ const start = partSeq * PART_SIZE;
|
|
|
|
|
+ const end = Math.min(start + PART_SIZE, fileSize);
|
|
|
|
|
+ const partData = fileData.slice(start, end);
|
|
|
|
|
+
|
|
|
|
|
+ Logger.info( `heanup 开始上传分片${partSeq}, 大小: ${partData.byteLength}字节`);
|
|
|
|
|
+ await simpleUploadFilePart(accessToken, remotePath, precreateResponse.uploadid!, partSeq, partData);
|
|
|
|
|
+ Logger.info(`heanup 分片${partSeq}上传完成`);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// 6. 创建文件(第三阶段)
|
|
// 6. 创建文件(第三阶段)
|
|
|
const createFileRequest: TaskCreateFileRequest = {
|
|
const createFileRequest: TaskCreateFileRequest = {
|
|
|
path: remotePath,
|
|
path: remotePath,
|