2023-12-18 16:30:33 +00:00
|
|
|
|
import { handleResponse } from './manageServer.js'
|
2024-02-28 09:40:22 +00:00
|
|
|
|
import { apiUrls } from './api' //接口配置
|
2023-12-18 16:30:33 +00:00
|
|
|
|
import { showToast } from "./untool"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const chooseFile = function (action = 'chooseImage', opt = {}) {
|
|
|
|
|
|
let opts = {
|
|
|
|
|
|
// sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
|
|
|
|
|
|
sizeType: ['compressed'],
|
|
|
|
|
|
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
|
|
|
|
|
|
...opt
|
|
|
|
|
|
}
|
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
|
uni[action]({
|
|
|
|
|
|
count: 1, // 默认9
|
|
|
|
|
|
...opts,
|
|
|
|
|
|
success: function (res) {
|
|
|
|
|
|
// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
|
|
|
|
|
|
var tempFilePaths = res.tempFilePaths || [res.tempFilePath]
|
|
|
|
|
|
if (tempFilePaths.length > opts.count) {
|
|
|
|
|
|
reject()
|
|
|
|
|
|
return showToast(`最多选择${opts.count}个`)
|
|
|
|
|
|
}
|
|
|
|
|
|
resolve(tempFilePaths)
|
|
|
|
|
|
},
|
|
|
|
|
|
fail: function (res) {
|
|
|
|
|
|
reject()
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const doRequest = function (file) {
|
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
|
uni.uploadFile({
|
2024-02-28 09:40:22 +00:00
|
|
|
|
url: `${apiUrls.uploadFile}`,
|
2023-12-18 16:30:33 +00:00
|
|
|
|
fileType: 'image', // TODO
|
|
|
|
|
|
filePath: file,
|
|
|
|
|
|
name: 'file',
|
|
|
|
|
|
formData: {
|
|
|
|
|
|
// 'user': 'test'
|
|
|
|
|
|
},
|
|
|
|
|
|
success(res) {
|
|
|
|
|
|
try {
|
|
|
|
|
|
const data = JSON.parse(res.data)
|
|
|
|
|
|
handleResponse(data, resolve, reject)
|
|
|
|
|
|
} catch (error) {
|
|
|
|
|
|
reject()
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
fail() {
|
|
|
|
|
|
reject()
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 单 选择并上传文件
|
|
|
|
|
|
const coreUploadFile = function (action = 'chooseImage', opt = {}) {
|
|
|
|
|
|
return chooseFile(action, opt).then(async (files) => {
|
|
|
|
|
|
if (opt.asyncFileFun) {
|
|
|
|
|
|
const newFiles = await opt.asyncFileFun(files)
|
|
|
|
|
|
files = newFiles
|
|
|
|
|
|
}
|
|
|
|
|
|
uni.showLoading()
|
|
|
|
|
|
return doRequest(files[0]).then(res => {
|
|
|
|
|
|
return res
|
|
|
|
|
|
}).finally(()=> {
|
|
|
|
|
|
uni.hideLoading()
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 多 选择并上传文件
|
|
|
|
|
|
const coreMultiUploadFile = async (action = 'chooseImage', opt = {})=> {
|
|
|
|
|
|
let files = await chooseFile(action, opt)
|
|
|
|
|
|
files = files || []
|
|
|
|
|
|
const allDef = []
|
|
|
|
|
|
if (opt.asyncFileFun) {
|
|
|
|
|
|
const newFiles = await opt.asyncFileFun(files)
|
|
|
|
|
|
files = newFiles
|
|
|
|
|
|
}
|
|
|
|
|
|
uni.showLoading()
|
|
|
|
|
|
files.map(val=>{
|
|
|
|
|
|
const def = doRequest(val).then(res => {
|
|
|
|
|
|
return res
|
|
|
|
|
|
})
|
|
|
|
|
|
allDef.push(def)
|
|
|
|
|
|
})
|
|
|
|
|
|
try{
|
|
|
|
|
|
let resFiles = await Promise.all(allDef)
|
|
|
|
|
|
uni.hideLoading()
|
|
|
|
|
|
return resFiles
|
|
|
|
|
|
}catch(e){
|
|
|
|
|
|
uni.hideLoading()
|
|
|
|
|
|
return files
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export {
|
|
|
|
|
|
coreUploadFile,
|
|
|
|
|
|
coreMultiUploadFile
|
|
|
|
|
|
}
|