mall_client/zyhs3_uniapp/common/http/upload.js

173 lines
4.4 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { baseUrl } from "./index.js"
import url from "./url.js"
import { sendRequest } from "./api.js"
import publics from "../utils/public.js"
let uploadImg = {
showAvatarModal(that, selWidth, selHeight){
that.$refs.avatar.fChooseImg(0,{
selWidth: `${selWidth}upx`, selHeight: `${selWidth}upx`,
inner: false,
canRotate: false
});
},
async getOssSignature(rspPath, type=0, fileNumber=1) {
// #ifdef H5
// uni.showToast({
// duration: 2000,
// icon:"none",
// title: "当前环境不支持上传图片请使用APP进行图片上传"
// })
// return false
// #endif
let fileObj = {}
let fileArray = []
if (typeof rspPath === "string") {
fileObj = publics.analysisResourcePath(rspPath)
} else if (Array.isArray(rspPath)) {
rspPath.forEach(v=>{
fileArray.push(publics.analysisResourcePath(v))
})
} else {
return false
}
let res = await sendRequest("GET", url.common.getOssSignature, {
fileType: fileObj.type ? fileObj.type : fileArray[0].type,
applicationType: type,
fileNumber: fileNumber
})
res.data.map((v, i) =>{
v.filePath = fileObj.url ? fileObj.url : fileArray[i].url
})
return res.data
},
// 通过oss上传图片
uploadImageOss(data, loading = true) {
if (!data || data.length === 0) return
if (loading) {
uni.showLoading({
mask: true
});
}
let uploadList = []
let uploadIndex = 0
return new Promise((resolve, reject) => {
data.map((v, i) =>{
let config = v
let formData = {
'key': config.key || (config.policy.dir+'/'+config.fileName),
'policy': typeof config.policy === 'string' ? config.policy : config.policy.policy,
'OSSAccessKeyId': config.accessKeyId || config.policy.accessKeyId,
'signature': config.signature || config.policy.signature,
'success_action_status': '200'//让服务端返回200,不然默认会返回204
}
console.log("formData....", formData, config)
if (uploadIndex === i){
uni.uploadFile({
url: config.host || config.policy.host,
filePath: config.filePath,
name: 'file',
headers: {
'Accept': 'application/json',
'Content-Type': 'multipart/form-data',
},
formData: formData,
complete: (res) => {
if (res.statusCode === 200) {
v.status = true
} else {
v.status = false
v.statusCode = res.statusCode
v.errMsg = res.errMsg
}
uploadList.push(v)
if (uploadIndex+1 === data.length) {
uni.hideLoading();
resolve(uploadList)
} else{
uploadIndex++
}
}
});
}
})
})
},
// 选择图片并上传
uploadImage(num, callback) {
uni.chooseImage({
count: num,
success: (res) => {
uni.showLoading({
title: '上传中...'
});
setTimeout(function() {
//最多30秒
uni.hideLoading();
}, 1000*30);
let tempFilePaths = res.tempFilePaths
for (var i = 0; i < tempFilePaths.length; i++) {
uni.uploadFile({
url: baseUrl +'upload',
filePath: tempFilePaths[i],
fileType: 'image',
name: 'file',
headers: {
'Accept': 'application/json',
'Content-Type': 'multipart/form-data',
},
formData: {
'method': 'images.upload',
'upfile': tempFilePaths[i]
},
success: (uploadFileRes) => {
callback(JSON.parse(uploadFileRes.data));
},
fail: (error) => {
if (error && error.response) {
showError(error.response);
}
},
complete: () => {
setTimeout(function() {
uni.hideLoading();
}, 250);
},
});
}
}
});
},
// 动态上传
async oldOssUpload(path, callback){
if(!path) return
uni.showLoading({
title: '上传中...'
});
setTimeout(function() {
//最多10秒
uni.hideLoading();
}, 1000*10);
let url1=plus.io.convertLocalFileSystemURL(path);
//去除后面时间戳
if(url1.indexOf("?t=") != -1){
url1 = url1.split("?t=")[0];
}
//判断第一个字符是否存在file://
if(url1.indexOf("file://") == -1){
url1 = 'file://'+url1;
}
let urls = url1.split(".");
let fileType = urls[urls.length-1];
let res = await sendRequest("GET", "single/home/policy", {type: 0, fileType: fileType})
let resData = res.data
if (resData) {
resData.filePath = url1
let data = await uploadImg.uploadImageOss([resData])
if (data) {
uni.hideLoading();
callback(resData)
}
}
}
}
export default uploadImg;