| New file | 
 |  |  | 
 |  |  | function pickExclude(obj, keys) { | 
 |  |  |    // 某些情况下,type可能会为 | 
 |  |  |     if (!['[object Object]', '[object File]'].includes(Object.prototype.toString.call(obj))) { | 
 |  |  |         return {} | 
 |  |  |     } | 
 |  |  |     return Object.keys(obj).reduce((prev, key) => { | 
 |  |  |         if (!keys.includes(key)) { | 
 |  |  |             prev[key] = obj[key] | 
 |  |  |         } | 
 |  |  |         return prev | 
 |  |  |     }, {}) | 
 |  |  | } | 
 |  |  |  | 
 |  |  | function formatImage(res) { | 
 |  |  |     return res.tempFiles.map((item) => ({ | 
 |  |  |         ...pickExclude(item, ['path']), | 
 |  |  |         type: 'image', | 
 |  |  |         url: item.path, | 
 |  |  |         thumb: item.path, | 
 |  |  |       size: item.size, | 
 |  |  |       // #ifdef H5 | 
 |  |  |       name: item.name | 
 |  |  |       // #endif | 
 |  |  |     })) | 
 |  |  | } | 
 |  |  |  | 
 |  |  | function formatVideo(res) { | 
 |  |  |     return [ | 
 |  |  |         { | 
 |  |  |             ...pickExclude(res, ['tempFilePath', 'thumbTempFilePath', 'errMsg']), | 
 |  |  |             type: 'video', | 
 |  |  |             url: res.tempFilePath, | 
 |  |  |             thumb: res.thumbTempFilePath, | 
 |  |  |          size: res.size, | 
 |  |  |          // #ifdef H5 | 
 |  |  |          name: res.name | 
 |  |  |          // #endif | 
 |  |  |         } | 
 |  |  |     ] | 
 |  |  | } | 
 |  |  |  | 
 |  |  | function formatMedia(res) { | 
 |  |  |     return res.tempFiles.map((item) => ({ | 
 |  |  |         ...pickExclude(item, ['fileType', 'thumbTempFilePath', 'tempFilePath']), | 
 |  |  |         type: res.type, | 
 |  |  |         url: item.tempFilePath, | 
 |  |  |         thumb: res.type === 'video' ? item.thumbTempFilePath : item.tempFilePath, | 
 |  |  |       size: item.size | 
 |  |  |     })) | 
 |  |  | } | 
 |  |  |  | 
 |  |  | function formatFile(res) { | 
 |  |  |     return res.tempFiles.map((item) => ({  | 
 |  |  |       ...pickExclude(item, ['path']),  | 
 |  |  |       url: item.path,  | 
 |  |  |       size:item.size, | 
 |  |  |       // #ifdef H5 | 
 |  |  |       name: item.name, | 
 |  |  |       type: item.type | 
 |  |  |       // #endif  | 
 |  |  |    })) | 
 |  |  | } | 
 |  |  | export function chooseFile({ | 
 |  |  |     accept, | 
 |  |  |     multiple, | 
 |  |  |     capture, | 
 |  |  |     compressed, | 
 |  |  |     maxDuration, | 
 |  |  |     sizeType, | 
 |  |  |     camera, | 
 |  |  |     maxCount | 
 |  |  | }) { | 
 |  |  |     return new Promise((resolve, reject) => { | 
 |  |  |         switch (accept) { | 
 |  |  |         case 'image': | 
 |  |  |             uni.chooseImage({ | 
 |  |  |                 count: multiple ? Math.min(maxCount, 9) : 1, | 
 |  |  |                 sourceType: capture, | 
 |  |  |                 sizeType, | 
 |  |  |                 success: (res) => resolve(formatImage(res)), | 
 |  |  |                 fail: reject | 
 |  |  |             }) | 
 |  |  |             break | 
 |  |  |             // #ifdef MP-WEIXIN | 
 |  |  |             // 只有微信小程序才支持chooseMedia接口 | 
 |  |  |         case 'media': | 
 |  |  |             wx.chooseMedia({ | 
 |  |  |                 count: multiple ? Math.min(maxCount, 9) : 1, | 
 |  |  |                 sourceType: capture, | 
 |  |  |                 maxDuration, | 
 |  |  |                 sizeType, | 
 |  |  |                 camera, | 
 |  |  |                 success: (res) => resolve(formatMedia(res)), | 
 |  |  |                 fail: reject | 
 |  |  |             }) | 
 |  |  |             break | 
 |  |  |             // #endif | 
 |  |  |         case 'video': | 
 |  |  |             uni.chooseVideo({ | 
 |  |  |                 sourceType: capture, | 
 |  |  |                 compressed, | 
 |  |  |                 maxDuration, | 
 |  |  |                 camera, | 
 |  |  |                 success: (res) => resolve(formatVideo(res)), | 
 |  |  |                 fail: reject | 
 |  |  |             }) | 
 |  |  |             break | 
 |  |  |             // #ifdef MP-WEIXIN || H5 | 
 |  |  |             // 只有微信小程序才支持chooseMessageFile接口 | 
 |  |  |         case 'file': | 
 |  |  |             // #ifdef MP-WEIXIN | 
 |  |  |             wx.chooseMessageFile({ | 
 |  |  |                 count: multiple ? maxCount : 1, | 
 |  |  |                 type: accept, | 
 |  |  |                 success: (res) => resolve(formatFile(res)), | 
 |  |  |                 fail: reject | 
 |  |  |             }) | 
 |  |  |             // #endif | 
 |  |  |             // #ifdef H5 | 
 |  |  |             // 需要hx2.9.9以上才支持uni.chooseFile | 
 |  |  |             uni.chooseFile({ | 
 |  |  |                 count: multiple ? maxCount : 1, | 
 |  |  |                 type: accept, | 
 |  |  |                 success: (res) => resolve(formatFile(res)), | 
 |  |  |                 fail: reject | 
 |  |  |             }) | 
 |  |  |             // #endif | 
 |  |  |             break | 
 |  |  |             // #endif | 
 |  |  |       default:  | 
 |  |  |          // 此为保底选项,在accept不为上面任意一项的时候选取全部文件 | 
 |  |  |          // #ifdef MP-WEIXIN | 
 |  |  |          wx.chooseMessageFile({ | 
 |  |  |              count: multiple ? maxCount : 1, | 
 |  |  |              type: 'all', | 
 |  |  |              success: (res) => resolve(formatFile(res)), | 
 |  |  |              fail: reject | 
 |  |  |          }) | 
 |  |  |          // #endif | 
 |  |  |          // #ifdef H5 | 
 |  |  |          // 需要hx2.9.9以上才支持uni.chooseFile | 
 |  |  |          uni.chooseFile({ | 
 |  |  |             count: multiple ? maxCount : 1, | 
 |  |  |             type: 'all', | 
 |  |  |             success: (res) => resolve(formatFile(res)), | 
 |  |  |             fail: reject | 
 |  |  |          }) | 
 |  |  |          // #endif | 
 |  |  |         } | 
 |  |  |     }) | 
 |  |  | } |