注入
TSXinject
1import {
2 ContainerRegistryManager,
3 FileService,
4 Inject,
5 Service,
6} from "@quan-erp/shared-backend-core";
7
8@Service()
9export class MyPluginService {
10 @Inject(FileService, ContainerRegistryManager.BUILTIN_PLUGIN)
11 private fileService: FileService;
12}addFile(options)
将临时上传移入存储并写入 FileEntity。
- tempFilePath / originalName / mimeType — 上传信息
- metadata / creatorId — 元数据与上传者
- type: FileStorageType — LOCAL 或 S3
- fileAccess / accessRole — 访问策略
- compression? — 可选
TSXaddFile
1import {
2 ContainerRegistryManager,
3 FileAccess,
4 FileService,
5 FileStorageType,
6 Inject,
7 Service,
8} from "@quan-erp/shared-backend-core";
9
10@Service()
11export class AttachmentService {
12 @Inject(FileService, ContainerRegistryManager.BUILTIN_PLUGIN)
13 private fileService: FileService;
14
15 async storeUpload(tempPath: string, userId: number) {
16 return this.fileService.addFile({
17 tempFilePath: tempPath,
18 originalName: "invoice.pdf",
19 mimeType: "application/pdf",
20 metadata: { source: "invoice-upload" },
21 creatorId: userId,
22 type: FileStorageType.LOCAL,
23 fileAccess: FileAccess.PRIVATE,
24 accessRole: [],
25 });
26 }
27}其他方法
- findFile(filename) — 按文件名取元数据
- getFiles(skip, limit) — 分页列表
- deleteFile(id) — 删除存储对象与数据库行
- generatePreSignedUrl(file, expiresInSeconds, mimeType) — 临时下载 URL
TSXdownload
1import {
2 ContainerRegistryManager,
3 FileService,
4 Inject,
5 Service,
6} from "@quan-erp/shared-backend-core";
7
8@Service()
9export class FileLinkService {
10 @Inject(FileService, ContainerRegistryManager.BUILTIN_PLUGIN)
11 private fileService: FileService;
12
13 async temporaryLink(filename: string, mimeType: string) {
14 return this.fileService.generatePreSignedUrl(
15 filename,
16 60 * 15,
17 mimeType
18 );
19 }
20}