111 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
/**
 | 
						||
 * 获取文件名和后缀
 | 
						||
 * @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;
 | 
						||
};
 |