| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 | /** * 获取文件名和后缀 * @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}
 |