Как предотвратить сохранение файла, если файл ранее существовал в мультиплеере - PullRequest
0 голосов
/ 05 марта 2020

Я использую multer с NetsJs и сохраняю файл, как показано ниже

    @Post('upload')
    @UseInterceptors(FileInterceptor('file', {
        storage: diskStorage({
            destination: '\\nasmnt\\gtwac\\file_upload',
            filename: (req, file, callback) => {
                callback(null, file.originalname);
            },
        }),
    }),
    )
    uploadFile(@UploadedFile() file, @Query() dialer: DialerListType): void {
        console.log(JSON.stringify(dialer));
        console.log(file);

    }

Когда я загружаю тот же файл снова, он перезапишет старый файл, в моем случае мне нужно выдать ошибку если файл уже существует Как я могу это сделать?

ps Я новичок в multer

1 Ответ

1 голос
/ 05 марта 2020

В случае, если у кого-то есть такая же проблема

import { MulterModule } from '@nestjs/platform-express';
import * as fs from 'fs';
import { diskStorage } from 'multer';
import * as path from 'path';
...
     MulterModule.registerAsync({
            imports: [SharedModule],
            useFactory: async (configService: ConfigService) => ({
                storage: diskStorage({
                    destination: configService.config.dialerFilePath.upload,
                    filename: (req, file, callback) => {
                        callback(null, file.originalname);
                    },
                }),
                fileFilter: (req, file, callback) => {

                    if (fs.existsSync(path.join(configService.config.dialerFilePath.upload, file.originalname))) {
                        callback(new NotAcceptableException(`File ${file.originalname} is already uploaded!`));
                    } else {
                        callback(null, true);
                    }
                },
            }),
            inject: [ConfigService],
        }),
...