|
|
@@ -1,5 +1,6 @@
|
|
|
import { createRoute, OpenAPIHono, z } from '@hono/zod-openapi';
|
|
|
import { FileService } from '@/server/modules/files/file.service';
|
|
|
+import { MinioService } from '@/server/modules/files/minio.service';
|
|
|
import { ErrorSchema } from '@/server/utils/errorHandler';
|
|
|
import { AppDataSource } from '@/server/data-source';
|
|
|
import { AuthContext } from '@/server/types/context';
|
|
|
@@ -84,9 +85,15 @@ const fileService = new FileService(AppDataSource);
|
|
|
const app = new OpenAPIHono<AuthContext>().openapi(createMultipartUploadPolicyRoute, async (c) => {
|
|
|
try {
|
|
|
const data = await c.req.json();
|
|
|
- const result = await fileService.createMultipartUploadPolicy(data);
|
|
|
+ const result = await fileService.createMultipartUploadPolicy(data, data.partCount || 1);
|
|
|
|
|
|
- return c.json(result, 200);
|
|
|
+ return c.json({
|
|
|
+ uploadId: result.uploadId,
|
|
|
+ bucket: result.bucket,
|
|
|
+ key: result.key,
|
|
|
+ host: `${process.env.MINIO_USE_SSL ? 'https' : 'http'}://${process.env.MINIO_ENDPOINT}:${process.env.MINIO_PORT}`,
|
|
|
+ partUrls: result.uploadUrls
|
|
|
+ }, 200);
|
|
|
} catch (error) {
|
|
|
const message = error instanceof Error ? error.message : '生成分片上传策略失败';
|
|
|
return c.json({ code: 500, message }, 500);
|