You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							109 lines
						
					
					
						
							2.4 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							109 lines
						
					
					
						
							2.4 KiB
						
					
					
				
								/**
							 | 
						|
								 * 获取文件名和后缀
							 | 
						|
								 * @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;
							 | 
						|
								  }
							 | 
						|
								};
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 * 获取文件和检测是否可选
							 | 
						|
								 */
							 | 
						|
								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.url || 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;
							 | 
						|
								};
							 |