球星卡微信小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

60 lines
1.7 KiB

import { getOssToken } from "@/service/oss.js"
/**
* dispose oss直传文件(视频,图片),传入以下两个参数,返回一个上传后的Array[urlLink] Promise对象
* @params pathList Array(String || Object[String]) 需要上传到oss的文件列表
* @params fileType String 上传到oss的文件类型,如:image、video
* 图片上传调用:let imageList = await dispose(res.tempFilePaths, 'image');
* 视频上传调用:let videoList = await dispose([res.tempFilePath], 'video');
*/
export async function dispose(pathList = [], fileType = 'image'){
let ossResult = await getOssToken(); // 获取oss权限
let oss = ossResult.data;
let premiseList = [];
pathList.map((item, index) => {
let promiseItem = new Promise((resolve, reject) => {
let tiemr = new Date();
let ext = getFileExtendingName(item.tempFilePath || item);
let nameStr = oss.dir + tiemr.getTime() + index + ext;
uni.uploadFile({
url: oss.host,
filePath: item.tempFilePath || item,
name: 'file',
fileType,
formData: {
'key': nameStr,
"OSSAccessKeyId": oss.accessid,
"policy": oss.policy,
"Signature": oss.signature,
"success_action_status": 200,
},
success: result => {
if (result.statusCode == 200) {
let fileUrl = oss.host + '/' + nameStr;
resolve(fileUrl);
}else{
reject(result);
}
},
fail: err => {
reject(err);
}
})
})
premiseList.push(promiseItem);
});
return Promise.all(premiseList);
}
// 获取文件后缀
function getFileExtendingName(filename){
var reg = /\.[^\.]+$/;
var matches = reg.exec(filename);
if (matches) {
return matches[0];
}
return '';
}