我有一个具有两个路由设置的上载控制器。一个用于files
,另一个用于photos
。它们本质上是相同的,但是我有不同的diskStorage
目的地。问题在于,控制器中最后一个似乎是为两个路由都设置的diskStorage
。可能只是我对事情的运作方式有误解,但似乎我应该能够做到。现在的设置方式是,files
被保存在photos
文件夹中,因为photos
路由是最后一条,但是如果我交换路由的顺序,则它们将按预期保存在files
文件夹中。这是代码片段。
@Post('files')
@UseInterceptors(FilesInterceptor('files', null, {
storage: diskStorage({
destination: `${__dirname}../../../uploads/files`,
filename: (req, file, cb) => {
const randomName = 'a random name';
cb(null, `${randomName}${extname(file.originalname)}`);
},
}),
}))
async upload(@UploadedFiles() files) {
return files;
}
@Post('photos')
@UseInterceptors(FilesInterceptor('files', null, {
storage: diskStorage({
destination: `${__dirname}../../../uploads/photos`,
filename: (req, file, cb) => {
const randomName = 'a random name';
cb(null, `${randomName}${extname(file.originalname)}`);
},
}),
}))
async uploadPhotos(@UploadedFiles() photos) {
return photos;
}
最佳答案
更新资料
在v5.2.0中已修复。即将发布
应该通过刚刚发布的v5.2.0更新来解决。
原始答案
我认为这是FilesInterceptor
的错误。我为此加了一个Github issue。
解决方法是,可以使用FileInterceptor
(用于单个文件),也可以在两个不同的files
中定义两个端点photos
和@Controller
。当我在本地测试时,这两种方法都有效。
关于javascript - 如何使用NestJS在同一 Controller 中使用多个diskStorage目标,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51635203/