uploadImg.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import UploadFile from "@/utils/upliadFile";
  2. import store from "@/store";
  3. import { base_img_url2 } from "@/api/config";
  4. import wx from "weixin-js-sdk";
  5. const miniUserId = store.state.home.miniUserId;
  6. const uploadFileObj = new UploadFile();
  7. function base64ToBlob(base64, mime = 'image/png') {
  8. const byteCharacters = window.atob(base64.split(',')[1]); // 去掉 Base64 前缀
  9. const byteNumbers = new Array(byteCharacters.length).fill(0).map((_, i) => byteCharacters.charCodeAt(i));
  10. const byteArray = new Uint8Array(byteNumbers);
  11. return new Blob([byteArray], { type: mime });
  12. }
  13. function base64ToFile(base64, filename = 'image.png') {
  14. const blob = base64ToBlob(base64);
  15. return new File([blob], filename, { type: blob.type });
  16. }
  17. async function uploadBase64(base64,isToPage = true) {
  18. return new Promise((resolve, reject) => {
  19. // 转为 File 对象
  20. const file = base64ToFile(base64, 'upload.png');
  21. let ext = 'png';
  22. let key = `birdseye-look-mini/${miniUserId}/${new Date().getTime()}.${ext}`;
  23. uploadFileObj.put(key, file).then((resFilename) => {
  24. let imgUrl = base_img_url2 + resFilename
  25. console.log('resFilename', base_img_url2 + resFilename);
  26. if(isToPage){
  27. wx.miniProgram.navigateTo({
  28. url: `/pages/subPages/share_img/index?imgUrl=${imgUrl}`,
  29. });
  30. }else{
  31. if(resFilename){
  32. resolve(imgUrl);
  33. }else{
  34. reject('失败')
  35. }
  36. }
  37. });
  38. })
  39. }
  40. export { uploadBase64 };