如果文件已存在于 multer 中,如何防止文件保存
How to prevent file saving if file already exists in multer
我正在使用 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.s 我是新手 multer
以防其他人遇到同样的问题
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],
}),
我正在使用 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.s 我是新手 multer
以防其他人遇到同样的问题
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],
}),