| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 | 
							- 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
 
-         }
 
-     })
 
- }
 
 
  |