63 lines
3.2 KiB
TypeScript
63 lines
3.2 KiB
TypeScript
import { EntityDict } from '../oak-app-domain';
|
||
import { BRC } from '..';
|
||
export type UploadFn = (file: File | string, name: string, // 文件的part name
|
||
uploadUrl: string, // 上传的url
|
||
formData: Record<string, any>, // 上传的其它part参数
|
||
autoInform?: boolean, // 上传成功是否会自动通知server(若不会则需要前台显式通知
|
||
getPercent?: Function, uploadId?: string, method?: "POST" | "PUT") => Promise<any>;
|
||
export type UploadToAspect = (file: File | string, name: string, // 文件的part name
|
||
aspectName: string, // 上传的aspect名
|
||
formData: Record<string, any>, // 上传的其它part参数
|
||
autoInform?: boolean) => Promise<any>;
|
||
/**
|
||
* Complicated Object Storage
|
||
* 用于定义在extraFile对象上对文件进行操作的目标类
|
||
* 根据不同的cos服务提供方法实现,如七牛、阿里等
|
||
*/
|
||
export interface Cos<ED extends EntityDict> {
|
||
name: string;
|
||
/**
|
||
* 是否自动通知服务器(不需要主动更新extraFile的uploadState)
|
||
*/
|
||
autoInform(): boolean;
|
||
/**
|
||
* 前台在生成extraFile返回之后调用此函数,获得上传OSS的相应参数
|
||
* 上传成功后,OSS服务器尽量使用通过后台回调服务器的方式去确认上传,若OSS不提供此能力则将autoInform置为false,前台主动在上传成功之后去更新
|
||
* @param extraFile
|
||
* @returns
|
||
*/
|
||
upload: (extraFile: ED['extraFile']['OpSchema'], uploadFn: UploadFn, file: string | File, uploadToAspect?: UploadToAspect, getPercent?: Function) => Promise<void>;
|
||
/**
|
||
* 构建出访问图片的url,注意这个url应当和objectId一对一映射,这样才可以实现多个extraFile之间共享cos上的路径
|
||
*/
|
||
composeFileUrl: (application: Partial<ED['application']['Schema']>, extraFile: Partial<ED['extraFile']['OpSchema']>, style?: string) => string;
|
||
}
|
||
export interface CosBackend<ED extends EntityDict> {
|
||
name: string;
|
||
/**
|
||
* 注入在后台extrafile生成之前,将上传所需要的token等信息生成并存放在uploadMeta属性中
|
||
* @param application applciation
|
||
* @param extraFile,要生成的extraFile数据
|
||
* @param context 后台上下文
|
||
* @returns
|
||
*/
|
||
formUploadMeta: (application: ED['application']['Schema'], extraFile: ED['extraFile']['OpSchema'], context: BRC<ED>) => Promise<void>;
|
||
/**
|
||
* 构建出访问图片的url,注意这个url应当和objectId一对一映射,这样才可以实现多个extraFile之间共享cos上的路径
|
||
*/
|
||
composeFileUrlBackend: (application: ED['application']['Schema'], extraFile: ED['extraFile']['OpSchema'], context: BRC<ED>, style?: string) => Promise<string>;
|
||
/**
|
||
* 后台对upload是否成功不确定的文件,向OSS发起主动确认
|
||
* @param extraFile
|
||
* @returns 是否已经上传OSS成功
|
||
*/
|
||
checkWhetherSuccess: (application: ED['application']['Schema'], extraFile: ED['extraFile']['OpSchema'], context: BRC<ED>) => Promise<boolean>;
|
||
/**
|
||
* 后台向OSS发起删除命令
|
||
* @param extraFile
|
||
* @param config
|
||
* @returns
|
||
*/
|
||
removeFile: (application: ED['application']['Schema'], extraFile: ED['extraFile']['OpSchema'], context: BRC<ED>) => Promise<void>;
|
||
}
|