fix: OSS客户端直传

This commit is contained in:
2025-12-23 14:34:22 +08:00
parent e9b79b2963
commit 84cafd66ae
7 changed files with 686 additions and 38 deletions

View File

@@ -2,22 +2,67 @@ import { requestClient } from '#/api/request';
/**
* 文件上传
* @param data
* 通过后端服务器上传文件到OSS
*
* @param data 上传数据包含file字段文件对象
* @returns Promise 返回上传结果包含url字段文件URL
*/
export async function uploadFile(data: any) {
return requestClient.upload('upload/image', data);
}
/**
* 文件上传 - 聊天信息
* @param data
* 用于聊天场景的文件上传
*
* @param data 上传数据包含file字段文件对象
* @returns Promise 返回上传结果包含url字段文件URL
*/
export async function uploadChatFile(data: any) {
return requestClient.upload('upload/chat-file', data);
}
/**
* 获取OSS上传签名信息
*
* 该接口用于获取OSS直传所需的签名信息包括
* - accessKeyId: 阿里云访问密钥ID
* - policy: Base64编码的上传策略
* - signature: 签名值
* - host: OSS服务端点URL
* - bucket: 存储桶名称(从后端环境变量获取,返回给前端)
* - key: 文件路径前缀
* - expire: 签名过期时间戳
*
* 使用场景:
* - 前端需要直接上传文件到OSS时先调用此接口获取签名
* - 签名具有时效性,需要在有效期内使用
* - 每次上传前建议重新获取签名,确保签名未过期
*
* 错误处理:
* - 如果后端返回错误会通过requestClient的统一错误处理机制处理
* - 调用方需要捕获异常并进行相应处理
*
* @returns Promise<OssSignature> 返回OSS签名信息对象
* @throws 如果API调用失败会抛出错误
*
* @example
* try {
* const signature = await getOssSignature();
* console.log('获取签名成功', signature);
* } catch (error) {
* console.error('获取签名失败', error);
* }
*/
export async function getOssSignature() {
return requestClient.get('/upload/oss-signature');
}
/**
* 通过文件id集合获取文件信息
* @param data
*
* @param data 请求数据包含fileInfoIds字段文件ID数组或逗号分隔的字符串
* @returns Promise 返回文件信息数组
*/
export async function getFileInfoByIds(data: any) {
return requestClient.post('/sys/fileInfo/getFileInfoByIds', data);