// 上传文件到阿里云oss import OSS from 'ali-oss' import {apiGetOSSSign} from '@/api/common' /* const Minio = require('minio') const stream = require('stream') */ import * as Minio from 'minio-es' import * as stream from 'stream' import * as buffer from 'buffer' const Buffer = buffer.Buffer /** * 上传到oss * @param data 文件数据 * @param fileName 存放在oss中的文件路径包含文件名 * @param isMultipart 是否分片上传 * @returns fileUrl 返回文件在阿里云上的地址 */ export async function useUploadFileToOSS(data,fileName,isMultipart=false){ const signRes=await apiGetOSSSign({StorageSource:1}) if(signRes.Ret!==200) return const accessKeyId=signRes.Data.AccessKeyId const accessKeySecret=signRes.Data.AccessKeySecret const stsToken=signRes.Data.SecurityToken const ALOSSINS=new OSS({ // yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。 region: "oss-cn-shanghai", // 从STS服务获取的临时访问密钥(AccessKey ID和AccessKey Secret)。 accessKeyId: accessKeyId, accessKeySecret: accessKeySecret, // 从STS服务获取的安全令牌(SecurityToken)。 stsToken: stsToken, // 填写Bucket名称,例如examplebucket。 bucket: "hzchart", endpoint:'hzstatic.hzinsights.com', cname:true, timeout:6000000 }); let res=null,resUrl=''; try { if(isMultipart){ const options = { // 获取分片上传进度、断点和返回值。 progress: (p, cpt, res) => { // console.log(p); // ALOSSAbortCheckpoint=cpt // this.percentage=parseInt(p*100) }, // 设置并发上传的分片数量。 parallel: 10, // 设置分片大小。默认值为1 MB,最小值为100 KB。 partSize: 1024 * 1024 * 10, // 10MB }; res=await ALOSSINS.multipartUpload(fileName,data,{...options}) }else{ res=await ALOSSINS.put(fileName,data) } if(res.res.status===200){ resUrl='https://hzstatic.hzinsights.com/'+res.name } } catch (error) { console.log('阿里云上传失败',error); } return resUrl } //vite 不支持Buffer 代替Buffer.form方法 const toBinary = (data)=>{ const length = data.length let buf = new ArrayBuffer(length) let view = new Uint8Array(buf) for(let i=0;i