代码之家  ›  专栏  ›  技术社区  ›  Reza

在multer中以前存在文件时如何防止文件保存

  •  0
  • Reza  · 技术社区  · 4 年前

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

    当我再次上传相同的文件时,它将覆盖旧文件,在我的情况下,如果文件已经存在,我需要抛出错误。我怎么能做到呢?

    p、 我是新手 穆特

    0 回复  |  直到 4 年前
        1
  •  1
  •   Reza    4 年前

    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],
            }),