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;
|
||
};
|