import { SYSTEM_SERVICE_PREFIX } from '@/constants/service'; import { request } from '../request'; const FILE_PREFIX = `${SYSTEM_SERVICE_PREFIX}/file`; export interface UploadFileResult { /** infra_file.id 的字符串形式(避免 Long 精度丢失) */ id: string; /** 文件访问 URL:私有桶带签名、公开桶裸 URL */ url: string; } /** 上传文件(模式一:后端中转) */ export function uploadFile(file: File, directory?: string) { const formData = new FormData(); formData.append('file', file); if (directory) { formData.append('directory', directory); } return request({ url: `${FILE_PREFIX}/upload`, method: 'post', data: formData }); } /** * 删除文件 * * 业务表单"取消/关闭/标记删除"场景调用本接口清理孤儿文件。 * 删除已不存在的文件(后端返回错误码 `1001003001`)应由调用方视为成功并吞掉。 */ export function deleteFile(id: string) { return request({ url: `${FILE_PREFIX}/delete`, method: 'delete', params: { id } }); } /** * 下载文件(流) * * 走后端代理接口 `/system/file/download?id=xxx`,由后端读取对象存储并以字节流返回。 * 私有桶下不要直接打开 `infra_file.url`,签名地址会过期。 */ export function downloadFile(id: string) { return request({ url: `${FILE_PREFIX}/download`, method: 'get', params: { id }, responseType: 'blob' }); }