|
|
@@ -7,15 +7,6 @@ import Taro from '@tarojs/taro';
|
|
|
const isMiniProgram = isWeapp();
|
|
|
const isBrowser = isH5();
|
|
|
|
|
|
-
|
|
|
-if (isMiniProgram) {
|
|
|
- try {
|
|
|
- Taro = require('@tarojs/taro');
|
|
|
- } catch (e) {
|
|
|
- // 忽略错误,回退到原生小程序
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
export interface MinioProgressEvent {
|
|
|
stage: 'uploading' | 'complete' | 'error';
|
|
|
message: string;
|
|
|
@@ -131,7 +122,7 @@ export class MinIOXHRMultipartUploader {
|
|
|
|
|
|
// 完成上传
|
|
|
try {
|
|
|
- await this.completeMultipartUpload(policy, key, uploadedParts);
|
|
|
+ const result = await this.completeMultipartUpload(policy, key, uploadedParts);
|
|
|
|
|
|
callbacks?.onProgress?.({
|
|
|
stage: 'complete',
|
|
|
@@ -145,7 +136,7 @@ export class MinIOXHRMultipartUploader {
|
|
|
fileUrl: `${policy.host}/${key}`,
|
|
|
fileKey: key,
|
|
|
bucketName: policy.bucket,
|
|
|
- fileId: result.file.id
|
|
|
+ fileId: result.fileId
|
|
|
};
|
|
|
} catch (error) {
|
|
|
callbacks?.onError?.(error instanceof Error ? error : new Error(String(error)));
|
|
|
@@ -288,7 +279,7 @@ export class MinIOXHRUploader {
|
|
|
fileUrl: `${policy.uploadPolicy.host}/${key}`,
|
|
|
fileKey: key,
|
|
|
bucketName: policy.uploadPolicy.bucket,
|
|
|
- fileId: result.file.id
|
|
|
+ fileId: policy.file.id
|
|
|
});
|
|
|
} else {
|
|
|
const error = new Error(`上传失败: ${xhr.status} ${xhr.statusText}`);
|
|
|
@@ -438,7 +429,7 @@ export class TaroMinIOMultipartUploader {
|
|
|
}
|
|
|
|
|
|
// 读取文件片段
|
|
|
- private static async readFileSlice(filePath: string, start: number, end: number): Promise<string | ArrayBuffer> {
|
|
|
+ private static async readFileSlice(filePath: string, start: number, end: number): Promise<ArrayBuffer> {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
try {
|
|
|
const fs = Taro?.getFileSystemManager?.();
|
|
|
@@ -447,8 +438,19 @@ export class TaroMinIOMultipartUploader {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- const fileData = fs.readFileSync(filePath, undefined, start, end - start );
|
|
|
- resolve(fileData);
|
|
|
+ const fileData = fs.readFileSync(filePath, undefined, start, end - start);
|
|
|
+
|
|
|
+ // 确保返回 ArrayBuffer 类型
|
|
|
+ if (typeof fileData === 'string') {
|
|
|
+ // 将字符串转换为 ArrayBuffer
|
|
|
+ const encoder = new TextEncoder();
|
|
|
+ resolve(encoder.encode(fileData).buffer);
|
|
|
+ } else if (fileData instanceof ArrayBuffer) {
|
|
|
+ resolve(fileData);
|
|
|
+ } else {
|
|
|
+ // 处理其他可能的数据类型
|
|
|
+ reject(new Error('文件数据类型不支持'));
|
|
|
+ }
|
|
|
} catch (error) {
|
|
|
reject(error);
|
|
|
}
|