|
|
@@ -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');
|
|
|
}
|