C. Upload Banyak file
1.Buat Kode Multi Upload
upload.controller.ts
import {
Controller,
Delete,
HttpException,
HttpStatus,
Param,
Post,
UploadedFile,
UploadedFiles,
UseGuards,
UseInterceptors,
} from '@nestjs/common';
import { FileInterceptor, FilesInterceptor } from '@nestjs/platform-express';
import { diskStorage } from 'multer';
import { ResponseSuccess } from 'src/interface/response';
import BaseResponse from 'src/utils/response/base.response';
import * as fs from 'fs';
import { JwtGuard } from '../auth/auth.guard';
@UseGuards(JwtGuard)
@Controller('upload')
export class UploadController extends BaseResponse {
constructor() {
super();
}
@UseInterceptors(
FilesInterceptor('files', 20, {
storage: diskStorage({
destination: 'public/uploads',
filename: (req, file, cb) => {
const fileExtension = file.originalname.split('.').pop();
cb(null, `${new Date().getTime()}.${fileExtension}`);
},
}),
}),
)
@Post('files')
async uploadFileMulti(
@UploadedFiles() files: Express.Multer.File[],
): Promise<ResponseSuccess> {
try {
const file_response: Array<{
file_url: string;
file_name: string;
file_size: number;
}> = [];
files.forEach((file) => {
const url = `${process.env.BASE_SERVER_URL}/uploads/${file.filename}`;
file_response.push({
file_url: url,
file_name: file.filename,
file_size: file.size,
});
});
return this._success('OK', {
file: file_response,
});
} catch (err) {
throw new HttpException('Ada Kesalahan', HttpStatus.BAD_REQUEST);
}
}
}