|
|
@@ -38,6 +38,7 @@ export interface UploadResult {
|
|
|
fileUrl: string;
|
|
|
fileKey: string;
|
|
|
bucketName: string;
|
|
|
+ fileId: number;
|
|
|
}
|
|
|
|
|
|
interface UploadPart {
|
|
|
@@ -143,7 +144,8 @@ export class MinIOXHRMultipartUploader {
|
|
|
return {
|
|
|
fileUrl: `${policy.host}/${key}`,
|
|
|
fileKey: key,
|
|
|
- bucketName: policy.bucket
|
|
|
+ bucketName: policy.bucket,
|
|
|
+ fileId: result.file.id
|
|
|
};
|
|
|
} catch (error) {
|
|
|
callbacks?.onError?.(error instanceof Error ? error : new Error(String(error)));
|
|
|
@@ -210,7 +212,7 @@ export class MinIOXHRMultipartUploader {
|
|
|
policy: MinioMultipartUploadPolicy,
|
|
|
key: string,
|
|
|
uploadedParts: UploadPart[]
|
|
|
- ): Promise<void> {
|
|
|
+ ): Promise<{ fileId: number }> {
|
|
|
const response = await fileClient["multipart-complete"].$post({
|
|
|
json: {
|
|
|
bucket: policy.bucket,
|
|
|
@@ -223,6 +225,8 @@ export class MinIOXHRMultipartUploader {
|
|
|
if (!response.ok) {
|
|
|
throw new Error(`完成分段上传失败: ${response.status} ${response.statusText}`);
|
|
|
}
|
|
|
+
|
|
|
+ return response.json();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -283,7 +287,8 @@ export class MinIOXHRUploader {
|
|
|
resolve({
|
|
|
fileUrl: `${policy.uploadPolicy.host}/${key}`,
|
|
|
fileKey: key,
|
|
|
- bucketName: policy.uploadPolicy.bucket
|
|
|
+ bucketName: policy.uploadPolicy.bucket,
|
|
|
+ fileId: result.file.id
|
|
|
});
|
|
|
} else {
|
|
|
const error = new Error(`上传失败: ${xhr.status} ${xhr.statusText}`);
|
|
|
@@ -412,7 +417,7 @@ export class TaroMinIOMultipartUploader {
|
|
|
|
|
|
// 完成上传
|
|
|
try {
|
|
|
- await this.completeMultipartUpload(policy, key, uploadedParts);
|
|
|
+ const result = await this.completeMultipartUpload(policy, key, uploadedParts);
|
|
|
|
|
|
callbacks?.onProgress?.({
|
|
|
stage: 'complete',
|
|
|
@@ -425,7 +430,8 @@ export class TaroMinIOMultipartUploader {
|
|
|
return {
|
|
|
fileUrl: `${policy.host}/${key}`,
|
|
|
fileKey: key,
|
|
|
- bucketName: policy.bucket
|
|
|
+ bucketName: policy.bucket,
|
|
|
+ fileId: result.fileId
|
|
|
};
|
|
|
} catch (error) {
|
|
|
callbacks?.onError?.(error instanceof Error ? error : new Error(String(error)));
|
|
|
@@ -489,7 +495,7 @@ export class TaroMinIOMultipartUploader {
|
|
|
policy: MinioMultipartUploadPolicy,
|
|
|
key: string,
|
|
|
uploadedParts: UploadPart[]
|
|
|
- ): Promise<void> {
|
|
|
+ ): Promise<{ fileId: number }> {
|
|
|
const response = await fileClient["multipart-complete"].$post({
|
|
|
json: {
|
|
|
bucket: policy.bucket,
|
|
|
@@ -502,6 +508,8 @@ export class TaroMinIOMultipartUploader {
|
|
|
if (!response.ok) {
|
|
|
throw new Error(`完成分段上传失败: ${response.status} ${response.statusText}`);
|
|
|
}
|
|
|
+
|
|
|
+ return await response.json();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -573,7 +581,8 @@ export class TaroMinIOUploader {
|
|
|
resolve({
|
|
|
fileUrl: `${policy.uploadPolicy.host}/${key}`,
|
|
|
fileKey: key,
|
|
|
- bucketName: policy.uploadPolicy.bucket
|
|
|
+ bucketName: policy.uploadPolicy.bucket,
|
|
|
+ fileId: result.file.id
|
|
|
});
|
|
|
} else {
|
|
|
reject(new Error(`上传失败: ${res.statusCode}`));
|