my-uniapp-tools
Version:
一个功能强大、性能优化的 uni-app 开发工具库,提供剪贴板、本地存储、导航、系统信息等常用功能
154 lines (153 loc) • 4.65 kB
TypeScript
/**
* 文件上传相关工具函数
* 支持微信小程序、支付宝小程序、H5多端兼容
*/
/**
* 上传配置接口
*/
export interface UploadConfig {
/** 上传服务器地址 */
url: string;
/** 文件对应的 key,开发者在服务端可以通过这个 key 获取文件的二进制内容 */
name?: string;
/** HTTP 请求中其他额外的 form data */
formData?: Record<string, any>;
/** HTTP 请求 Header,Header 中不能设置 Referer */
header?: Record<string, string>;
/** 文件大小限制(MB) */
maxSize?: number;
/** 允许的文件类型 */
allowedTypes?: string[];
/** 是否显示提示信息 */
showToast?: boolean;
/** 超时时间(ms) */
timeout?: number;
/** 成功提示信息 */
successMessage?: string;
/** 失败提示信息 */
failMessage?: string;
}
/**
* 文件选择类型
*/
export type FileSelectType = 'image' | 'messagefile' | 'local';
/**
* 选择文件配置接口
*/
export interface ChooseFileConfig {
/** 文件选择类型 */
type?: FileSelectType;
/** 最多可以选择的文件数量 */
count?: number;
/** 所选的图片的尺寸(仅image类型有效) */
sizeType?: ('original' | 'compressed')[];
/** 选择图片的来源(仅image类型有效) */
sourceType?: ('album' | 'camera')[];
/** 文件类型限制(仅local类型有效) */
extension?: string[];
/** 文件大小限制(MB) */
maxSize?: number;
/** 是否显示提示信息 */
showToast?: boolean;
/** 失败提示信息 */
failMessage?: string;
}
/**
* 选择图片配置接口(向后兼容)
*/
export interface ChooseImageConfig extends Omit<ChooseFileConfig, 'type' | 'extension'> {
}
/**
* 上传结果接口
*/
export interface UploadResult {
/** 是否成功 */
success: boolean;
/** 服务器返回的数据 */
data?: any;
/** 提示信息 */
message?: string;
/** 本地临时文件路径 */
tempFilePath?: string;
/** HTTP 状态码 */
statusCode?: number;
}
/**
* 选择文件结果接口
*/
export interface ChooseFileResult {
/** 是否成功 */
success: boolean;
/** 临时文件路径数组 */
tempFilePaths?: string[];
/** 临时文件对象数组 */
tempFiles?: Array<{
path: string;
size: number;
}>;
/** 提示信息 */
message?: string;
/** 文件选择类型 */
type: FileSelectType;
}
/**
* 选择图片结果接口(向后兼容)
*/
export interface ChooseImageResult extends Omit<ChooseFileResult, 'type'> {
}
/**
* 上传进度回调函数类型
*/
export type ProgressCallback = (progress: {
/** 上传进度百分比 */
progress: number;
/** 已经上传的数据长度 */
totalBytesSent: number;
/** 预期需要上传的数据总长度 */
totalBytesExpectedToSend: number;
}) => void;
export declare function chooseFile(config?: ChooseFileConfig): Promise<ChooseFileResult>;
/**
* 选择图片(向后兼容)
* @param config 选择配置
* @returns Promise<ChooseImageResult> 选择结果
*/
export declare function chooseImage(config?: ChooseImageConfig): Promise<ChooseImageResult>;
/**
* 上传文件
* @param filePath 文件路径
* @param config 上传配置
* @param onProgress 进度回调
* @returns Promise<UploadResult> 上传结果
*/
export declare function uploadFile(filePath: string, config: UploadConfig, onProgress?: ProgressCallback): Promise<UploadResult>;
/**
* 选择并上传文件(一体化功能)
* @param config 上传配置
* @param chooseConfig 选择文件配置
* @param onProgress 进度回调
* @returns Promise<UploadResult[]> 上传结果数组
*/
export declare function chooseAndUploadFile(config: UploadConfig, chooseConfig?: ChooseFileConfig, onProgress?: ProgressCallback): Promise<UploadResult[]>;
/**
* 选择并上传图片(向后兼容)
* @param config 上传配置
* @param chooseConfig 选择图片配置
* @param onProgress 进度回调
* @returns Promise<UploadResult[]> 上传结果数组
*/
export declare function chooseAndUploadImage(config: UploadConfig, chooseConfig?: ChooseImageConfig, onProgress?: ProgressCallback): Promise<UploadResult[]>;
/**
* 检查是否支持文件上传
* @returns boolean 是否支持
*/
export declare function isUploadSupported(): boolean;
/**
* 获取文件信息
* @param filePath 文件路径
* @returns Promise<{size: number, type?: string}> 文件信息
*/
export declare function getFileInfo(filePath: string): Promise<{
size: number;
digest?: string;
} | null>;