Тип объекта, полученного при загрузке файла с использованием @UploadFile - PullRequest
0 голосов
/ 06 декабря 2018

В API REST ниже, какой тип объекта файла получен.

@Post('/:folderId/documents/:fileName')
@UseInterceptors(FileInterceptor('file'))
@ApiConsumes('multipart/form-data')
@ApiImplicitParam({ name: 'folderId', description: ' Folder Id' })
@ApiImplicitParam({ name: 'fileName', description: ' File Name' })
@ApiImplicitFile({ name: 'file', required: true, description: 'PDF File' })
async uploadFile(@UploadedFile() file, @Param() folderId, @Param() fileName) {
/**
 * I need to know the type of file object (first argument) of uploadFile
 */
    this.folderService.uploadFile(file, folderId, fileName);
}

Мне нужно записать файл, полученный в запросе, на диск.Как это сделать?

1 Ответ

0 голосов
/ 08 декабря 2018

Вы можете сохранить файл, указав путь назначения в MulterOptions:

// files will be saved in the /uploads folder
@UseInterceptors(FileInterceptor('file', {dest: 'uploads'}))

Если вы хотите больше контроля над сохранением вашего файла, вы можете создать мультитер diskStorage вместо этого объект конфигурации:

import { diskStorage } from 'multer';

export const myStorage = diskStorage({
  // Specify where to save the file
  destination: (req, file, cb) => {
    cb(null, 'uploads');
  },
  // Specify the file name
  filename: (req, file, cb) => {
    cb(null, Date.now() + '-' + file.originalname);
  },
});

И затем передайте его свойству storage в вашем контроллере.

@UseInterceptors(FileInterceptor('file', {storage: myStorage}))

Дополнительные параметры конфигурации см. в документах multer .

...