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