mirror of
https://github.com/cloudreve/frontend.git
synced 2025-12-26 04:02:47 +00:00
Fix: COS cannot finish upload
This commit is contained in:
parent
907f86550d
commit
a682aac1c9
|
|
@ -9,6 +9,7 @@ import {
|
|||
} from "../types";
|
||||
import { OBJtoXML, request, requestAPI } from "../utils";
|
||||
import {
|
||||
COSUploadCallbackError,
|
||||
COSUploadError,
|
||||
CreateUploadSessionError,
|
||||
DeleteUploadSessionError,
|
||||
|
|
@ -370,6 +371,23 @@ export async function cosFormUploadChunk(
|
|||
return res.data;
|
||||
}
|
||||
|
||||
export async function cosUploadCallback(
|
||||
sessionID: string,
|
||||
cancel: CancelToken
|
||||
): Promise<any> {
|
||||
const res = await requestAPI<any>(`callback/cos/${sessionID}`, {
|
||||
method: "get",
|
||||
data: "{}",
|
||||
cancelToken: cancel,
|
||||
});
|
||||
|
||||
if (res.data.code != 0) {
|
||||
throw new COSUploadCallbackError(res.data);
|
||||
}
|
||||
|
||||
return res.data.data;
|
||||
}
|
||||
|
||||
export async function upyunFormUploadChunk(
|
||||
url: string,
|
||||
file: File,
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ export enum UploaderErrorName {
|
|||
FailedFinishOneDriveUpload = "FailedFinishOneDriveUpload",
|
||||
S3LikeChunkUploadFailed = "S3LikeChunkUploadFailed",
|
||||
S3LikeUploadCallbackFailed = "S3LikeUploadCallbackFailed",
|
||||
COSUploadCallbackFailed = "COSUploadCallbackFailed",
|
||||
COSPostUploadFailed = "COSPostUploadFailed",
|
||||
UpyunPostUploadFailed = "UpyunPostUploadFailed",
|
||||
QiniuChunkUploadFailed = "QiniuChunkUploadFailed",
|
||||
|
|
@ -316,6 +317,18 @@ export class COSUploadError extends UploaderError {
|
|||
}
|
||||
}
|
||||
|
||||
// COS 无法完成上传回调
|
||||
export class COSUploadCallbackError extends APIError {
|
||||
constructor(response: Response<any>) {
|
||||
super(UploaderErrorName.COSUploadCallbackFailed, "", response);
|
||||
}
|
||||
|
||||
public Message(i18n: string): string {
|
||||
this.message = `无法完成文件上传`;
|
||||
return super.Message(i18n);
|
||||
}
|
||||
}
|
||||
|
||||
// Upyun 上传失败
|
||||
export class UpyunUploadError extends UploaderError {
|
||||
constructor(public response: UpyunError) {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import Base from "./base";
|
||||
import { cosFormUploadChunk } from "../api";
|
||||
import Base, { Status } from "./base";
|
||||
import { cosFormUploadChunk, cosUploadCallback } from "../api";
|
||||
|
||||
export default class COS extends Base {
|
||||
public upload = async () => {
|
||||
|
|
@ -22,4 +22,13 @@ export default class COS extends Base {
|
|||
this.cancelToken.token
|
||||
);
|
||||
};
|
||||
|
||||
protected async afterUpload(): Promise<any> {
|
||||
this.transit(Status.finishing);
|
||||
this.logger.info(`Sending COS upload callback...`);
|
||||
return cosUploadCallback(
|
||||
this.task.session!.sessionID,
|
||||
this.cancelToken.token
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue