// utils/file-chooser.ts export const chooseFile = (options: any = {}): any => { const defaultOptions = { count: 1, type: 'image' } const config = { ...defaultOptions, ...options } return new Promise((resolve: any, reject: any) => { // #ifdef H5 || APP-PLUS uni.chooseFile({ ...config, success: (res: any) => resolve(res), fail: (err: any) => reject(err) }) // #endif // #ifdef MP-WEIXIN // 微信小程序需要根据type映射到不同的API if (config.type === 'image') { wx.chooseImage({ count: config.count, success: (res: any) => { const { tempFilePaths, tempFiles } = res // 统一返回格式 const result = { tempFilePaths: tempFilePaths, tempFiles: tempFiles.map((file: any) => ({ path: file.path, size: file.size, type: file.type || 'image', name: '' })) } resolve(result) }, fail: reject }) } else { wx.chooseMessageFile({ count: config.count, type: config.type === 'video' ? 'video' : 'file', success: (res: any) => { resolve({ tempFilePaths: res.tempFiles.map((file: any) => file.path), tempFiles: res.tempFiles }) }, fail: reject }) } // #endif // #ifdef MP-ALIPAY // 支付宝小程序处理 my.chooseImage({ count: config.count, success: (res: any) => { resolve({ tempFilePaths: res.apFilePaths, tempFiles: res.apFilePaths.map((path: any) => ({ path })) }) }, fail: reject }) // #endif }) }