球星卡微信小程序
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.

59 lines
1.7 KiB

  1. import { getOssToken } from "@/service/oss.js"
  2. /**
  3. * dispose oss直传文件(视频图片)传入以下两个参数返回一个上传后的Array[urlLink] Promise对象
  4. * @params pathList Array(String || Object[String]) 需要上传到oss的文件列表
  5. * @params fileType String 上传到oss的文件类型imagevideo
  6. * 图片上传调用let imageList = await dispose(res.tempFilePaths, 'image');
  7. * 视频上传调用let videoList = await dispose([res.tempFilePath], 'video');
  8. */
  9. export async function dispose(pathList = [], fileType = 'image'){
  10. let ossResult = await getOssToken(); // 获取oss权限
  11. let oss = ossResult.data;
  12. let premiseList = [];
  13. pathList.map((item, index) => {
  14. let promiseItem = new Promise((resolve, reject) => {
  15. let tiemr = new Date();
  16. let ext = getFileExtendingName(item.tempFilePath || item);
  17. let nameStr = oss.dir + tiemr.getTime() + index + ext;
  18. uni.uploadFile({
  19. url: oss.host,
  20. filePath: item.tempFilePath || item,
  21. name: 'file',
  22. fileType,
  23. formData: {
  24. 'key': nameStr,
  25. "OSSAccessKeyId": oss.accessid,
  26. "policy": oss.policy,
  27. "Signature": oss.signature,
  28. "success_action_status": 200,
  29. },
  30. success: result => {
  31. if (result.statusCode == 200) {
  32. let fileUrl = oss.host + '/' + nameStr;
  33. resolve(fileUrl);
  34. }else{
  35. reject(result);
  36. }
  37. },
  38. fail: err => {
  39. reject(err);
  40. }
  41. })
  42. })
  43. premiseList.push(promiseItem);
  44. });
  45. return Promise.all(premiseList);
  46. }
  47. // 获取文件后缀
  48. function getFileExtendingName(filename){
  49. var reg = /\.[^\.]+$/;
  50. var matches = reg.exec(filename);
  51. if (matches) {
  52. return matches[0];
  53. }
  54. return '';
  55. }