如何解决Nest js上传未保存文件
我正在关注File upload的nestjs
文档,我的端点正在获取文件,但未存储该文件。
我使用的配置与NesJS相同
@Post('upload')
@UseInterceptors(FileInterceptor('file'))
uploadFile(@UploadedFile() file) {
console.log(file);
}
我的app.module
文件中,我为以下项添加了导入:
MulterModule.register({
dest: './uploads'
})
但是文件未存储在目录uploads
中。完整的日志是:
undefined
{
fieldname: 'file',originalname: 'nopornimage.png',encoding: '7bit',mimetype: 'image/png',buffer: <Buffer 89 50 4e 47 0d 0a 1a 04 d00 01 73 52 47 42 00 ae ce 04 ... 20087 more bytes>,size: 20137
}
(是,包括undefined
)
我在做什么错了?
解决方法
您应该指定目的地。 multer options
@Post('upload')
@UseInterceptors(FileInterceptor('file',{
dest: 'uploads/'
}))
uploadFile(@UploadedFile() file) {
console.log(file);
}
或者您可以在fs
模块中使用createWriteStream来自己保存文件。
import {createWriteStream} from 'fs'
@Post('upload')
@UseInterceptors(FileInterceptor('file'))
uploadFile(@UploadedFile() file) {
const ws = createWriteStream('custom_filename')
ws.write(file.buffer)
console.log(file);
}
,
- 您应该在域模块而非应用程序中注册
multer
模块 模块(除非应用模块是项目中唯一的模块) 例如,如果您的控制器属于任务域,则应 在任务模块而非应用模块中注册multer
imports: [
TypeOrmModule.forFeature([TaskRepository]),MulterModule.register({ dest: './upload' }),],controllers: [TaskController],providers: [TaskService],})
export class TaskModule {}
- 创建
upload
目录并确定其在multer
中的路径 注册
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。