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