Как вызвать multer после того, как тело запроса было принято? [nest.js] - PullRequest
0 голосов
/ 01 июля 2019

Я хочу переименовать файлы после получения req.body, но мультитер работает с файлами перед чтением тела.

Поэтому я должен вызывать multer после получения тела (нужна функция-обертка), но я не знаю, как мне это сделать, потому что, например, nest использует перехватчик для вызова multer, а затем передает аргумент @UploadedFiles(): image.

Как я могу позвонить в multer In Post декоратор и передать multer req.body, а затем передать возвращенные изображения?

const storage = {
  storage: diskStorage({
    destination: (req, file, callback) => {
      const user = req.query.email;
      const appName = req.query.appName;
      const path = `./src/View/images/${user}/${appName}/${file.fieldname}`;

      if (!fs.existsSync(path)) {
        mkDirByPathSync(path);
      }
      callback(null, path);
    },
    filename: (req, file, callback) => {
      return callback(null, file.originalname);
    },
  }),
};

@Post('/generateTemplate')
  @UseInterceptors(FileFieldsInterceptor([
    { name: 'appLogo', maxCount: 1 },
    { name: 'iconSmallPWA', maxCount: 1 },
    { name: 'iconMiddlePWA', maxCount: 1 },
    { name: 'usersAvatars', maxCount: 20 },
    { name: 'screenshots', maxCount: 20 },
  ], storage ))
  receiveData(@UploadedFiles() images, @Body() fileDto: any, @Query() urlQuery: QueryInterface) {
    this.formatDataService.formatReceivedData(fileDto.createAppForm, urlQuery.email);
    this.filesService.formatReceivedFiles(images);
    this.appService.generateHtml();
    return 'ololo';
  }
...