UNPKG

my-uniapp-tools

Version:

一个功能强大、性能优化的 uni-app 开发工具库,提供剪贴板、本地存储、导航、系统信息等常用功能

154 lines (153 loc) 4.65 kB
/** * 文件上传相关工具函数 * 支持微信小程序、支付宝小程序、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>;