oak-general-business/es/types/Cos.d.ts

80 lines
3.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { EntityDict } from '../oak-app-domain';
import { BRC } from '..';
import { Cache } from 'oak-frontend-base/es/features/cache';
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: (options: {
extraFile: ED['extraFile']['OpSchema'];
uploadFn: UploadFn;
file: string | File;
uploadToAspect?: UploadToAspect;
getPercent?: Function;
}) => Promise<void>;
/**
* 构建出访问图片的url注意这个url应当和objectId一对一映射这样才可以实现多个extraFile之间共享cos上的路径
*/
composeFileUrl: (options: {
application: Partial<ED['application']['Schema']>;
extraFile: Partial<ED['extraFile']['OpSchema']>;
cache: Cache<ED>;
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: (options: {
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>;
}