Przeglądaj źródła

refactor: update importExcelTags method to handle multipart file uploads and improve buffer retrieval

Dave 3 tygodni temu
rodzic
commit
e47be32bd7

+ 11 - 23
apps/box-mgnt-api/src/mgnt-backend/feature/video-media/video-media.controller.ts

@@ -24,6 +24,7 @@ import {
   ApiNotFoundResponse,
   ApiBadRequestResponse,
 } from '@nestjs/swagger';
+import type { MultipartFile } from '@fastify/multipart';
 import { VideoMediaService } from './video-media.service';
 import {
   VideoMediaListQueryDto,
@@ -284,7 +285,7 @@ export class VideoMediaController {
     },
   })
   @Post('import/excel-tags')
-  async importExcelTags(@Req() req: FastifyRequest) {
+  async importExcelTags(@Req() req: FastifyRequest, @Body() _body: any) {
     const getBuffer = async (file: any): Promise<Buffer | undefined> => {
       if (!file) return undefined;
       if (Buffer.isBuffer(file)) return file;
@@ -316,32 +317,19 @@ export class VideoMediaController {
 
     // fastify multipart
     const reqAny = req as any;
-    let buf: Buffer | undefined;
-
-    if (reqAny.isMultipart?.() && typeof reqAny.file === 'function') {
-      const part = await reqAny.file();
-      buf = await getBuffer(part);
-    }
-
-    if (!buf && reqAny.isMultipart?.() && typeof reqAny.parts === 'function') {
-      for await (const part of reqAny.parts()) {
-        if (part?.type === 'file' && part?.fieldname === 'file') {
-          buf = await getBuffer(part);
-          break;
-        }
-      }
-    }
-
-    if (!buf) {
-      const bodyFile = reqAny.body?.file;
-      const mpFile = Array.isArray(bodyFile) ? bodyFile[0] : bodyFile;
-      buf = await getBuffer(mpFile);
+    const bodyFile = reqAny.body?.file;
+    let mpFile: MultipartFile | undefined = Array.isArray(bodyFile)
+      ? bodyFile[0]
+      : bodyFile;
+    if (!mpFile && reqAny.isMultipart?.()) {
+      mpFile = await reqAny.file();
     }
-
-    if (!buf) {
+    if (!mpFile) {
       throw new BadRequestException('No file uploaded');
     }
 
+    const buf = await getBuffer(mpFile);
+
     if (!buf?.length) {
       throw new BadRequestException('Empty file');
     }