上传文件支持进度条 参数getPercent
This commit is contained in:
parent
c79b7ca63f
commit
c7ebbf00f6
|
|
@ -20,6 +20,6 @@ export declare class ExtraFile<ED extends EntityDict> extends Feature {
|
|||
} | undefined;
|
||||
getFileName(extraFile: ED['extraFile']['OpSchema']): string;
|
||||
formatBytes(size: number): string;
|
||||
autoUpload(extraFile: ED['extraFile']['OpSchema'], file: File | string, style?: string): Promise<string>;
|
||||
autoUpload(extraFile: ED['extraFile']['OpSchema'], file: File | string, style?: string, getPercent?: Function): Promise<string>;
|
||||
private uploadToAspect;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -146,7 +146,7 @@ export class ExtraFile extends Feature {
|
|||
formatBytes(size) {
|
||||
return bytesToSize(size);
|
||||
}
|
||||
async autoUpload(extraFile, file, style) {
|
||||
async autoUpload(extraFile, file, style, getPercent) {
|
||||
const extraFileId = extraFile.id || generateNewId();
|
||||
const applicationId = extraFile.applicationId || this.application.getApplicationId();
|
||||
await this.cache.operate('extraFile', {
|
||||
|
|
@ -166,7 +166,7 @@ export class ExtraFile extends Feature {
|
|||
const up = new Upload();
|
||||
try {
|
||||
const cos = getCos(newExtraFile.origin);
|
||||
await cos.upload(newExtraFile, up.uploadFile, file, this.uploadToAspect.bind(this));
|
||||
await cos.upload(newExtraFile, up.uploadFile, file, this.uploadToAspect.bind(this), getPercent);
|
||||
if (!cos.autoInform()) {
|
||||
await this.cache.exec('operate', {
|
||||
entity: 'extraFile',
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ export interface Cos<ED extends EntityDict> {
|
|||
autoInform?: boolean) => Promise<any>, file: string | File, uploadToAspect: (file: File | string, name: string, // 文件的part name
|
||||
aspectName: string, // 上传的aspect名
|
||||
formData: Record<string, any>, // 上传的其它part参数
|
||||
autoInform?: boolean) => Promise<any>) => Promise<void>;
|
||||
autoInform?: boolean) => Promise<any>, getPercent?: Function) => Promise<void>;
|
||||
/**
|
||||
* 构建出访问图片的url,注意这个url应当和objectId一对一映射,这样才可以实现多个extraFile之间共享cos上的路径
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ export default class CTYun implements Cos<EntityDict> {
|
|||
upload(extraFile: OpSchema, uploadFn: (file: File | string, name: string, // 文件的part name
|
||||
uploadUrl: string, // 上传的url
|
||||
formData: Record<string, any>, // 上传的其它part参数
|
||||
autoInform?: boolean) => Promise<any>, file: string | File): Promise<void>;
|
||||
autoInform?: boolean, // 上传成功是否会自动通知server(若不会则需要前台显式通知)
|
||||
getPercent?: Function) => Promise<any>, file: string | File, _uploadToAspect?: any, getPercent?: Function): Promise<void>;
|
||||
composeFileUrl(application: Partial<EntityDict['application']['Schema']>, extraFile: Partial<EntityDict['extraFile']['OpSchema']>, style?: string): string;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ export default class CTYun {
|
|||
assert(objectId);
|
||||
return `extraFile/${objectId}${extension ? '.' + extension : ''}`;
|
||||
}
|
||||
async upload(extraFile, uploadFn, file) {
|
||||
async upload(extraFile, uploadFn, file, _uploadToAspect, getPercent) {
|
||||
const uploadMeta = extraFile.uploadMeta;
|
||||
let response;
|
||||
try {
|
||||
|
|
@ -33,7 +33,7 @@ export default class CTYun {
|
|||
Policy: uploadMeta.policy,
|
||||
AWSAccessKeyId: uploadMeta.accessKey,
|
||||
signature: uploadMeta.signature,
|
||||
}, true);
|
||||
}, true, getPercent);
|
||||
}
|
||||
catch (err) {
|
||||
// 网络错误
|
||||
|
|
|
|||
|
|
@ -20,6 +20,6 @@ export declare class ExtraFile<ED extends EntityDict> extends Feature {
|
|||
} | undefined;
|
||||
getFileName(extraFile: ED['extraFile']['OpSchema']): string;
|
||||
formatBytes(size: number): string;
|
||||
autoUpload(extraFile: ED['extraFile']['OpSchema'], file: File | string, style?: string): Promise<string>;
|
||||
autoUpload(extraFile: ED['extraFile']['OpSchema'], file: File | string, style?: string, getPercent?: Function): Promise<string>;
|
||||
private uploadToAspect;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -149,7 +149,7 @@ class ExtraFile extends Feature_1.Feature {
|
|||
formatBytes(size) {
|
||||
return (0, extraFile_1.bytesToSize)(size);
|
||||
}
|
||||
async autoUpload(extraFile, file, style) {
|
||||
async autoUpload(extraFile, file, style, getPercent) {
|
||||
const extraFileId = extraFile.id || (0, uuid_1.generateNewId)();
|
||||
const applicationId = extraFile.applicationId || this.application.getApplicationId();
|
||||
await this.cache.operate('extraFile', {
|
||||
|
|
@ -169,7 +169,7 @@ class ExtraFile extends Feature_1.Feature {
|
|||
const up = new upload_1.Upload();
|
||||
try {
|
||||
const cos = (0, index_frontend_1.getCos)(newExtraFile.origin);
|
||||
await cos.upload(newExtraFile, up.uploadFile, file, this.uploadToAspect.bind(this));
|
||||
await cos.upload(newExtraFile, up.uploadFile, file, this.uploadToAspect.bind(this), getPercent);
|
||||
if (!cos.autoInform()) {
|
||||
await this.cache.exec('operate', {
|
||||
entity: 'extraFile',
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ export interface Cos<ED extends EntityDict> {
|
|||
autoInform?: boolean) => Promise<any>, file: string | File, uploadToAspect: (file: File | string, name: string, // 文件的part name
|
||||
aspectName: string, // 上传的aspect名
|
||||
formData: Record<string, any>, // 上传的其它part参数
|
||||
autoInform?: boolean) => Promise<any>) => Promise<void>;
|
||||
autoInform?: boolean) => Promise<any>, getPercent?: Function) => Promise<void>;
|
||||
/**
|
||||
* 构建出访问图片的url,注意这个url应当和objectId一对一映射,这样才可以实现多个extraFile之间共享cos上的路径
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ export default class CTYun implements Cos<EntityDict> {
|
|||
upload(extraFile: OpSchema, uploadFn: (file: File | string, name: string, // 文件的part name
|
||||
uploadUrl: string, // 上传的url
|
||||
formData: Record<string, any>, // 上传的其它part参数
|
||||
autoInform?: boolean) => Promise<any>, file: string | File): Promise<void>;
|
||||
autoInform?: boolean, // 上传成功是否会自动通知server(若不会则需要前台显式通知)
|
||||
getPercent?: Function) => Promise<any>, file: string | File, _uploadToAspect?: any, getPercent?: Function): Promise<void>;
|
||||
composeFileUrl(application: Partial<EntityDict['application']['Schema']>, extraFile: Partial<EntityDict['extraFile']['OpSchema']>, style?: string): string;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ class CTYun {
|
|||
(0, assert_1.assert)(objectId);
|
||||
return `extraFile/${objectId}${extension ? '.' + extension : ''}`;
|
||||
}
|
||||
async upload(extraFile, uploadFn, file) {
|
||||
async upload(extraFile, uploadFn, file, _uploadToAspect, getPercent) {
|
||||
const uploadMeta = extraFile.uploadMeta;
|
||||
let response;
|
||||
try {
|
||||
|
|
@ -35,7 +35,7 @@ class CTYun {
|
|||
Policy: uploadMeta.policy,
|
||||
AWSAccessKeyId: uploadMeta.accessKey,
|
||||
signature: uploadMeta.signature,
|
||||
}, true);
|
||||
}, true, getPercent);
|
||||
}
|
||||
catch (err) {
|
||||
// 网络错误
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ export class ExtraFile<ED extends EntityDict> extends Feature {
|
|||
},
|
||||
});
|
||||
modiEntityId = modi.entityId!;
|
||||
return modi.data as ED['extraFile']['OpSchema'];
|
||||
return modi.data as ED['extraFile']['OpSchema'];
|
||||
};
|
||||
|
||||
const extraFile = getExtraFileData();
|
||||
|
|
@ -197,7 +197,8 @@ export class ExtraFile<ED extends EntityDict> extends Feature {
|
|||
async autoUpload(
|
||||
extraFile: ED['extraFile']['OpSchema'],
|
||||
file: File | string,
|
||||
style?: string
|
||||
style?: string,
|
||||
getPercent?: Function,
|
||||
) {
|
||||
const extraFileId = extraFile.id || generateNewId();
|
||||
const applicationId = extraFile.applicationId || this.application.getApplicationId();
|
||||
|
|
@ -222,7 +223,8 @@ export class ExtraFile<ED extends EntityDict> extends Feature {
|
|||
newExtraFile as OpSchema,
|
||||
up.uploadFile,
|
||||
file,
|
||||
this.uploadToAspect.bind(this)
|
||||
this.uploadToAspect.bind(this),
|
||||
getPercent,
|
||||
);
|
||||
if (!cos.autoInform()) {
|
||||
await this.cache.exec('operate', {
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ export interface Cos<ED extends EntityDict> {
|
|||
formData: Record<string, any>, // 上传的其它part参数
|
||||
autoInform?: boolean // 上传成功是否会自动通知server(若不会则需要前台显式通知)
|
||||
) => Promise<any>,
|
||||
getPercent?: Function,
|
||||
) => Promise<void>;
|
||||
|
||||
/**
|
||||
|
|
@ -51,7 +52,7 @@ export interface Cos<ED extends EntityDict> {
|
|||
|
||||
export interface CosBackend<ED extends EntityDict> {
|
||||
name: string;
|
||||
|
||||
|
||||
/**
|
||||
* 注入在后台extrafile生成之前,将上传所需要的token等信息生成并存放在uploadMeta属性中
|
||||
* @param application applciation
|
||||
|
|
@ -64,7 +65,7 @@ export interface CosBackend<ED extends EntityDict> {
|
|||
extraFile: ED['extraFile']['OpSchema'],
|
||||
) => Promise<void>;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 构建出访问图片的url,注意这个url应当和objectId一对一映射,这样才可以实现多个extraFile之间共享cos上的路径
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -45,9 +45,12 @@ export default class CTYun implements Cos<EntityDict> {
|
|||
name: string, // 文件的part name
|
||||
uploadUrl: string, // 上传的url
|
||||
formData: Record<string, any>, // 上传的其它part参数
|
||||
autoInform?: boolean // 上传成功是否会自动通知server(若不会则需要前台显式通知)
|
||||
autoInform?: boolean, // 上传成功是否会自动通知server(若不会则需要前台显式通知)
|
||||
getPercent?: Function,
|
||||
) => Promise<any>,
|
||||
file: string | File
|
||||
file: string | File,
|
||||
_uploadToAspect?: any,
|
||||
getPercent?: Function,
|
||||
) {
|
||||
const uploadMeta = extraFile.uploadMeta! as CTYunUploadInfo;
|
||||
let response;
|
||||
|
|
@ -62,7 +65,8 @@ export default class CTYun implements Cos<EntityDict> {
|
|||
AWSAccessKeyId: uploadMeta.accessKey,
|
||||
signature: uploadMeta.signature,
|
||||
},
|
||||
true
|
||||
true,
|
||||
getPercent,
|
||||
);
|
||||
} catch (err) {
|
||||
// 网络错误
|
||||
|
|
|
|||
Loading…
Reference in New Issue