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