无法使用 NestJs 和 Multer 上传文件

Posted

技术标签:

【中文标题】无法使用 NestJs 和 Multer 上传文件【英文标题】:Not able to upload file using NestJs and Multer 【发布时间】:2021-11-09 17:52:48 【问题描述】:

我正在尝试使用 Nestjs 将文件上传到 aws s3 存储桶

  @Post('uploadfile/:bucketName')
  @UseInterceptors(FileInterceptor('file'))
  async addAvatar(@UploadedFile() file: Express.Multer.File, @Param('bucketName') bucketName: string): Promise<S3.ManagedUpload.SendData> 
    return this.s3ManagerService.uploadFile(file.buffer, file.originalname, bucketName);
  

我的 Postrequest 是:

    let formData = new FormData();

    formData.append("file", fs.createReadStream(path.join(__dirname, `./uploads/$uploadedFileName.jpg`)), file.data.originalname);

    console.log(JSON.stringify(formData.getHeaders()));

    const response = await axios.post("my_url", formData, 
      ...formData.getHeaders(),
    );

总是出错:

[Nest] 5082 - 14/09/2021, 19:36:48 错误 [ExceptionsHandler] 无法读取未定义的属性“缓冲区” 类型错误:无法读取未定义的属性“缓冲区”

如果我在这里遗漏了什么,你能帮我吗?

【问题讨论】:

【参考方案1】:

这说明你的文件没有上传,可能是因为它应该作为multipart/formData发送。试试这个:

    const response = await axios.post("my_url", formData, 
        headers: 
            "content-type": "multipart/form-data"
        ,
    );

【讨论】:

以上是关于无法使用 NestJs 和 Multer 上传文件的主要内容,如果未能解决你的问题,请参考以下文章

我尝试从 multipart api 上传文件和文本数据,但即使我使用 multer 也无法获取文件

无法使用 express 和 multer 运行 node.js 服务器以在节点中上传文件

我无法将文件上传到我使用 node js multer 指定的目录

具有清晰上传和调整大小的 Multer-S3

使用具有角度7平均堆栈的multer中间件上传文件不起作用

在使用 Multer 将文件上传到文件夹之前删除和创建文件夹