gaoluyang
3 天以前 92230c9a97dc9ce9df3313d11d26999c04bb6b26
src/uni_modules/uni-file-picker/components/uni-file-picker/utils.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,109 @@
/**
 * èŽ·å–æ–‡ä»¶åå’ŒåŽç¼€
 * @param {String} name
 */
export const get_file_ext = (name) => {
   const last_len = name.lastIndexOf('.')
   const len = name.length
   return {
      name: name.substring(0, last_len),
      ext: name.substring(last_len + 1, len)
   }
}
/**
 * èŽ·å–æ‰©å±•å
 * @param {Array} fileExtname
 */
export const get_extname = (fileExtname) => {
   if (!Array.isArray(fileExtname)) {
      let extname = fileExtname.replace(/(\[|\])/g, '')
      return extname.split(',')
   } else {
      return fileExtname
   }
   return []
}
/**
 * èŽ·å–æ–‡ä»¶å’Œæ£€æµ‹æ˜¯å¦å¯é€‰
 */
export const get_files_and_is_max = (res, _extname) => {
   let filePaths = []
   let files = []
   if(!_extname || _extname.length === 0){
      return {
         filePaths,
         files
      }
   }
   res.tempFiles.forEach(v => {
      let fileFullName = get_file_ext(v.name)
      const extname = fileFullName.ext.toLowerCase()
      if (_extname.indexOf(extname) !== -1) {
         files.push(v)
         filePaths.push(v.path)
      }
   })
   if (files.length !== res.tempFiles.length) {
      uni.showToast({
         title: `当前选择了${res.tempFiles.length}个文件 ï¼Œ${res.tempFiles.length - files.length} ä¸ªæ–‡ä»¶æ ¼å¼ä¸æ­£ç¡®`,
         icon: 'none',
         duration: 5000
      })
   }
   return {
      filePaths,
      files
   }
}
/**
 * èŽ·å–å›¾ç‰‡ä¿¡æ¯
 * @param {Object} filepath
 */
export const get_file_info = (filepath) => {
   return new Promise((resolve, reject) => {
      uni.getImageInfo({
         src: filepath,
         success(res) {
            resolve(res)
         },
         fail(err) {
            reject(err)
         }
      })
   })
}
/**
 * èŽ·å–å°è£…æ•°æ®
 */
export const get_file_data = async (files, type = 'image') => {
   // æœ€ç»ˆéœ€è¦ä¸Šä¼ æ•°æ®åº“的数据
   let fileFullName = get_file_ext(files.name)
   const extname = fileFullName.ext.toLowerCase()
   let filedata = {
      name: files.name,
      uuid: files.uuid,
      extname: extname || '',
      cloudPath: files.cloudPath,
      fileType: files.fileType,
      url: files.path || files.path,
      size: files.size, //单位是字节
      image: {},
      path: files.path,
      video: {}
   }
   if (type === 'image') {
      const imageinfo = await get_file_info(files.path)
      delete filedata.video
      filedata.image.width = imageinfo.width
      filedata.image.height = imageinfo.height
      filedata.image.location = imageinfo.path
   } else {
      delete filedata.image
   }
   return filedata
}