uploadAliOss copy.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import client from '@/utils/ali-oss';
  2. // 自定义请求头
  3. const headers = {
  4. // 指定Object的存储类型。
  5. 'x-oss-storage-class': 'Standard',
  6. // 指定Object的访问权限。
  7. 'x-oss-object-acl': 'private',
  8. // 通过文件URL访问文件时,指定以附件形式下载文件,下载后的文件名称定义为example.txt。
  9. 'Content-Disposition': 'attachment; filename="example.txt"',
  10. // 设置Object的标签,可同时设置多个标签。
  11. 'x-oss-tagging': 'Tag1=1&Tag2=2',
  12. // 指定PutObject操作时是否覆盖同名目标Object。此处设置为true,表示禁止覆盖同名Object。
  13. 'x-oss-forbid-overwrite': 'true',
  14. };
  15. async function uploadAliOss(data) {
  16. try {
  17. // 填写OSS文件完整路径和本地文件的完整路径。OSS文件完整路径中不能包含Bucket名称。
  18. // 如果本地文件的完整路径中未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。
  19. console.log(blobToFile(base64ToBlob(data), 'h5UploadAliOss'));
  20. const result = await client.put(
  21. 'h5UploadAliOss', //获取一个随机的文件名
  22. blobToFile(base64ToBlob(data), 'h5UploadAliOss') //base64转file对象
  23. // { 'Content-Type': 'image/jpeg' } //设置Content-Type
  24. );
  25. console.log(result);
  26. } catch (e) {
  27. console.log(e);
  28. }
  29. }
  30. export function base64ToBlob(base64Data) {
  31. let arr = base64Data.split(','),
  32. fileType = arr[0].match(/:(.*?);/)[1],
  33. bstr = atob(arr[1]),
  34. l = bstr.length,
  35. u8Arr = new Uint8Array(l);
  36. while (l--) {
  37. u8Arr[l] = bstr.charCodeAt(l);
  38. }
  39. return new Blob([u8Arr], {
  40. type: fileType,
  41. });
  42. }
  43. export function blobToFile(newBlob, fileName) {
  44. newBlob.lastModifiedDate = new Date();
  45. newBlob.name = fileName;
  46. return newBlob;
  47. }
  48. export default uploadAliOss;