100 lines
2.4 KiB
JavaScript
100 lines
2.4 KiB
JavaScript
|
|
import { handleResponse } from './manageServer.js'
|
|||
|
|
import apiConfig from './api.js' //接口配置
|
|||
|
|
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]
|
|||
|
|
resolve(tempFilePaths)
|
|||
|
|
},
|
|||
|
|
fail: function (res) {
|
|||
|
|
reject()
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const doRequest = function (file) {
|
|||
|
|
return new Promise((resolve, reject) => {
|
|||
|
|
uni.uploadFile({
|
|||
|
|
url: `${apiConfig.uploadFile}`,
|
|||
|
|
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
|
|||
|
|
}
|