我有一个具有两个路由设置的上载控制器。一个用于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/

10-09 17:53
查看更多