javascript - 如果文件已存在于multer中,如何防止文件保存
问题描述
我正在使用multer
with 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
解决方案
万一其他人有同样的问题
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],
}),
推荐阅读
- c# - 如果我超过 Google SMTP 发送限制,我的 C# 代码会发生什么
- python - 使用 Python Flask 时 Localhost:5000 继续加载
- shopify - 循环浏览特定集合中的产品
- javascript - 正则表达式电子邮件验证:@ 之后我想要最多 2 个点和 1 个破折号
- ios - 崩溃:iOS 13 中的基金会 NSClassFromString+200
- python - 如何减少大量文件的python os.listdir的内存使用量
- arm - rockchipRV1107 需要哪种 JTAG/SWD 编程器-调试器?
- wordpress - 如何在elementor的帖子小部件中包含自定义字段值
- reactjs - 反应状态更新仅在第二次点击时重新渲染 - 异步数据
- vue.js - 子组件不更新父组件的值