首页 > 解决方案 > 我在nodejs环境下使用axios发送图片到nestjs服务器,但是服务器没有拿到图片信息

问题描述

我使用流式传输将图像发送到服务器,而不是发送整个图像 https://github.com/axios/axios#request-config

(async () => {
  let r = await axios
    .post(`http://localhost:5000/upload`, {
      file: fs.createReadStream("C:\\Users\\Administrator\\Pictures\\a.jpg"),

      // Error: Request failed with status code 500
      // file: await fs.readFile("C:\\Users\\Administrator\\Pictures\\a.jpg")
    })
    .then(v => v.data);
  l(r); // ok
})();

服务器代码https://docs.nestjs.com/techniques/file-upload

  @Post('upload')
  @UseInterceptors(FileInterceptor('file'))
  upload(@UploadedFile() file, @Body() body) {
    l(file); // undefined
    return 'ok';
  }

我已经尝试了很长时间,我该怎么办?

标签: node.jsaxiosnestjs

解决方案


纱线添加表单数据

(async () => {
  const l = console.log;
  const axios = require("axios");
  const fs = require("fs-extra");
  var FormData = require("form-data");
  var form = new FormData();
  form.append("file", fs.createReadStream("C:\\Users\\Administrator\\Pictures\\a.jpg"));
  form.append("type", "avatar");

  let r = await axios({
    method: "post",
    url: "http://localhost:5000/upload",
    data: form,
    headers: form.getHeaders()
  }).then(v => v.data);
  l(r); // ok
})();

推荐阅读