reactor:【INFRA】文件上传 api,增加 directory 参数,去除 path 参数,并支持按照日期分目录、文件名不再使用 sha256 而是时间戳

pull/147/head
YunaiV 2025-05-02 20:59:30 +08:00
parent db60915de6
commit 4d308078fa
2 changed files with 17 additions and 12 deletions

View File

@ -1,11 +1,9 @@
import { baseUrl, apiPath, tenantId } from '@/sheep/config';
import request from '@/sheep/request';
import request, { getAccessToken } from '@/sheep/request';
const FileApi = {
// 上传文件
uploadFile: (file) => {
// TODO 芋艿:访问令牌的接入;
const token = uni.getStorageSync('token');
uploadFile: (file, directory) => {
uni.showLoading({
title: '上传中',
});
@ -17,7 +15,10 @@ const FileApi = {
header: {
Accept: '*/*',
'tenant-id': tenantId,
// Authorization: 'Bearer test247',
Authorization: 'Bearer ' + getAccessToken(),
},
formData: {
directory,
},
success: (uploadFileRes) => {
let result = JSON.parse(uploadFileRes.data);
@ -42,12 +43,13 @@ const FileApi = {
},
// 获取文件预签名地址
getFilePresignedUrl: (path) => {
getFilePresignedUrl: (name, directory) => {
return request({
url: '/infra/file/presigned-url',
method: 'GET',
params: {
path,
name,
directory,
},
});
},

View File

@ -175,7 +175,7 @@ function uploadCloudFiles(files, max = 5, onUploadProgress) {
});
}
function uploadFilesFromPath(path) {
function uploadFilesFromPath(path, directory) {
// 目的:用于微信小程序,选择图片时,只有 path
return uploadFiles(
Promise.resolve({
@ -187,11 +187,13 @@ function uploadFilesFromPath(path) {
},
],
}),
{},
{
directory,
},
);
}
async function uploadFiles(choosePromise, { onChooseFile, onUploadProgress }) {
async function uploadFiles(choosePromise, { onChooseFile, onUploadProgress, directory }) {
// 获取选择的文件
const res = await choosePromise;
// 处理文件选择回调
@ -212,7 +214,7 @@ async function uploadFiles(choosePromise, { onChooseFile, onUploadProgress }) {
const uploadPromises = files.map(async (file) => {
try {
// 1.1 获取文件预签名地址
const { data: presignedInfo } = await FileApi.getFilePresignedUrl(file.name);
const { data: presignedInfo } = await FileApi.getFilePresignedUrl(file.name, directory);
// 1.2 获取二进制文件对象
const fileBuffer = await readFile(file);
@ -260,6 +262,7 @@ async function uploadFiles(choosePromise, { onChooseFile, onUploadProgress }) {
function chooseAndUploadFile(
opts = {
type: 'all',
directory: undefined,
},
) {
if (opts.type === 'image') {
@ -279,7 +282,7 @@ function createFile(vo, file) {
const fileVo = {
configId: vo.configId,
url: vo.url,
path: file.name,
path: vo.path,
name: file.name,
type: file.fileType,
size: file.size,