提交 c8221a8a authored 作者: lidongxu's avatar lidongxu

feat(plan): 上传计划表格到 OSS

通农商
上级 0b933ecd
import request from '@/utils/request' import request from '@/utils/request'
import OSS from 'ali-oss' import OSS from 'ali-oss'
const ossAuthURL = `${import.meta.env.VITE_APP_PROMOTION}/user/aliyun/signature` // 后台获取阿里云 OSS 权限信息接口 const ossAuthURL = `${import.meta.env.VITE_APP_PROMOTION}/user/aliyun/sts_token` // 后台获取阿里云 OSS 权限信息接口
const ossPublickURL = import.meta.env.VITE_APP_OSS_PUBLIC_URL // OSS 公共域名 const ossPublickURL = import.meta.env.VITE_APP_OSS_PUBLIC_URL // OSS 公共域名
import { v4 as uuidv4 } from 'uuid'; import { v4 as uuidv4 } from 'uuid';
import store from '@/store' import store from '@/store'
...@@ -12,50 +12,25 @@ export const uploadFileToOSSAPI = (fileName, filePath) => { ...@@ -12,50 +12,25 @@ export const uploadFileToOSSAPI = (fileName, filePath) => {
baseURL: ossAuthURL, baseURL: ossAuthURL,
url: '' url: ''
}) })
const { policy, security_token: xOssSecurityToken, signature: xOssSignature, x_oss_credential: xOssCredential, x_oss_date: xOssDate, x_oss_signature_version: xOssSignatureVersion } = authRes.data; const { accessKeyId, securityToken, accessKeySecret, expiration, region, web_js_link } = authRes.data;
const client = new OSS({ const client = new OSS({
// yourRegion填写Bucket所在地域。 // Bucket 所在地域
region: 'oss-cn-shanghai', region: `oss-${region}`,
// 从STS服务获取的临时访问密钥(AccessKey ID和AccessKey Secret)。 // 从 STS 服务获取的临时访问密钥(AccessKey ID 和 AccessKey Secret)
accessKeyId: 'yourAccessKeyId', accessKeyId: accessKeyId,
accessKeySecret: 'yourAccessKeySecret', accessKeySecret: accessKeySecret,
// 从STS服务获取的安全令牌(SecurityToken)。 // 从STS服务获取的安全令牌(SecurityToken)。
stsToken: xOssSecurityToken, stsToken: securityToken,
// 刷新临时访问凭证的时间间隔,单位为毫秒。 // 刷新临时访问凭证的时间间隔,单位为毫秒。
refreshSTSTokenInterval: 300000, refreshSTSTokenInterval: expiration,
// 填写Bucket名称。 // 填写Bucket名称。
bucket: 'examplebucket' bucket: web_js_link
}); });
// 发送请求上传文件 (文件名包含路径文件夹名字)
const res = await client.put(`planExcel/${store.state.name}/${uuidv4()}-` + fileName, filePath)
resolve(res.url) // 上传成功
//上传参数
const fd = new FormData();
fd.append('key', `planExcel/${store.state.name}/${uuidv4()}/` + fileName);
fd.append('policy', policy);
fd.append('x-oss-signature-version', xOssSignatureVersion);
fd.append('x-oss-credential', xOssCredential);
fd.append('x-oss-date', xOssDate);
fd.append('x-oss-signature', xOssSignature);
fd.append('x-oss-security-token', xOssSecurityToken);
fd.append('success_action_status', "200");
fd.append('file', filePath)
// 发送请求上传文件
const res = await request({
url: `https://${authRes.data.web_js_link}`,
data: fd,
method: 'PUT',
header: {
'Content-Type': 'multipart/form-data'
}
});
if (res.statusCode === 200) {
console.log('上传成功地址', ossPublickURL + fileName)
resolve(ossPublickURL + fileName) // 上传成功
} else {
reject(res) // 上传失败,返回响应
}
}) })
} }
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论