import { handleResponse, getCommonReqData } from './manageServer.js' import { apiUrls, host } from './api' //接口配置 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) => { let comReqData = getCommonReqData() uni.uploadFile({ url: `${host}${apiUrls.uploadFile}`, fileType: 'image', // TODO filePath: file, name: 'file', header: { ...comReqData.header, }, formData: { // 'user': 'test' }, success(res) { try { const data = JSON.parse(res.data) handleResponse({ data, resolve, reject }) } catch (error) { reject() } }, fail() { showToast("文件上传失败") 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.url }).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.url }) allDef.push(def) }) try{ let resFiles = await Promise.all(allDef) uni.hideLoading() return resFiles }catch(e){ uni.hideLoading() throw Error(e) } } export { coreUploadFile, coreMultiUploadFile }