123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- import config from './config'
- export default {
- isHttp(path) {
- return path.startsWith('http') || path.startsWith('https')
- },
- escapeHTML(a) {
- a = "" + a;
- return a.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(
- /'/g, "'")
- },
-
- unescapeHTML(a) {
- a = "" + a;
- return a.replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&").replace(/"/g, '"').replace(
- /'/g, "'")
- },
- uuid(len = 16) {
- const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('')
- const uuid = []
- if (len) {
-
- for (let i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * chars.length]
- } else {
- let r
-
- uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'
- uuid[14] = '4'
- for (let i = 0; i < 36; i++) {
- if (!uuid[i]) {
- r = 0 | Math.random() * 16
- uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]
- }
- }
- }
- return uuid.join('')
- },
- upload(data) {
- return uni.uploadFile({
- url: this.isHttp(data.url) ? data.url : config.apiBaseUrl + data.url,
- name: data.name || 'file',
- formData: {
- ...data.formData,
- token: uni.getStorageSync('token')
- },
- header: data.header || {},
- filePath: data.filePath
- }).then(res => {
- return JSON.parse(res)
- })
- },
- uploadCloud(data) {
- return uniCloud.uploadFile(data).then(res => {
- return res
- })
- },
- chooseAndUpload(methods, chooseParam, uploadParam, isCloud) {
- const uploadArr = []
- return this[methods](chooseParam).then(file => {
- file.filePaths.forEach((filePath, index) => {
- if (isCloud) {
- const fileArr = filePath.split('.')
-
- const fileType = file.tempFiles[index].type || 'image/png'
- const suffix = fileArr.length >= 2 ? fileArr[fileArr.length - 1] : fileType.split(
- '/')[1]
- uploadArr.push(this.uploadCloud({
- filePath,
- cloudPath: this.uuid() + '.' + suffix,
- fileType: (methods === 'chooseImage' ? 'image/' : 'video/') + suffix
- }).then(res => {
- if (res.success) {
- return {
- filePath: res.fileID
- }
- } else {
- uni.showToast({
- title: res.msg,
- icon: 'none'
- })
- }
- }))
- } else {
- uploadArr.push(this.upload({
- ...uploadParam,
- filePath
- }).then(res => {
- if (res.code === 200 || res.success) {
- return res.data
- } else {
- uni.showToast({
- title: res.msg,
- icon: 'none'
- })
- }
- }))
- }
- })
- uni.showLoading({
- title: '上传中...'
- })
- return Promise.all(uploadArr).then(res => {
- uni.hideLoading()
- return res.filter(item => item)
- })
- })
- },
- chooseImage(data) {
- return uni.chooseImage({
- count: 1,
- ...data
- }).then(res => {
- return {
- filePaths: res.tempFilePaths,
- tempFiles: res.tempFiles
- }
- })
- },
- chooseAndUploadImage(chooseParam, uploadParam, isCloud) {
- return this.chooseAndUpload('chooseImage', chooseParam, uploadParam, isCloud)
- },
- chooseVideo(data) {
- return uni.chooseVideo({
- ...data
- }).then(res => {
- return {
- filePaths: [res.tempFilePath],
- tempFiles: [res.tempFile]
- }
- })
- },
- chooseAndUploadVideo(chooseParam, uploadParam, isCloud) {
- return this.chooseAndUpload('chooseVideo', chooseParam, uploadParam, isCloud)
- },
- }
|