【问题标题】:Uploading image file with formData and Axios使用 formData 和 Axios 上传图片文件
【发布时间】:2020-07-16 07:41:20
【问题描述】:

所以我想将图像上传到不接受 json 有效负载,而是接受 formData 的服务器。 我正在做的是

var bodyFormData = new FormData();
bodyFormData.set("access_token", globalState.access_token);
bodyFormData.set("listing_id", 2);
bodyFormData.append("image", Cookies.get("listingCover"));

但是在这之后如果我console.log(bodyFormData) 它返回一个空对象?相反,如果我 console.log(...bodyFormData) 它返回我在上面设置的每个表单数据的 3 个独立数组。我希望能够在请求正文中将其作为bodyFormData 发送,如下所示。我该怎么做?

 axios({
    method,
    url: url,
    data: bodyFormData,
    headers: { "Content-Type": "multipart/form-data" },
  })

【问题讨论】:

  • console.log(bodyFormData) 什么都不会显示,前端不能console.log formData。

标签: javascript axios multipartform-data form-data


【解决方案1】:

使用FormData.entries() 到console.log 以查看您的formData 中存储的内容

你不能简单的 console.log(bodyFormData) 它不会返回任何东西。

在下面运行sn-p。

var bodyFormData = new FormData();
bodyFormData.set("access_token", 'globalState.access_token');
bodyFormData.set("listing_id", 2);
bodyFormData.append("image", 'Cookies.get("listingCover")');

//Loop througt formData 
for (var data of bodyFormData.entries()) {
    console.log(data[0]+ ', ' + data[1]); 
}

您在做axios时没有任何方法您需要将您的方法设置为post,如下所示发送您的bodyFormData

编辑:工作演示:https://jsfiddle.net/mxkLejrf/

=> 在演示中,您可以看到开发工具 -> 网络 bodyFormData 正在通过 POST 发送

axios({
    method: 'post',
    url: 'someEndPointUrl',
    data: bodyFormData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
  .then(function(response) {
    // success
    console.log(response);
  })
  .catch(function(response) {
    // error
    console.log(response);
});

【讨论】:

  • 我提到的method 实际上是“POST”。我从一个参数接收它。您在上面发布的 sn-p 工作正常,但是当我在 axios 的 data 属性中发送 bodyFormData 时。实际发送的 formdata 是一个空对象。我收到没有提供文件的错误。即使登录控制台时,我也可以看到 blob 文件
  • @KautilyaKondragunta jsfiddle.net/mxkLejrf => 在演示中,您可以看到开发工具 -> 网络 bodyFormData 正在通过 POST 发送
  • @KautilyaKondragunta 确保您实际上在此处传递图像bodyFormData.append("image", Cookies.get("listingCover")) 并且这有图像Cookies.get("listingCover")
  • 是的,它正在返回一个我在记录它时需要的 blob 文件,所以这应该不是问题。我认为这只是后端 API 出了点问题。感谢您澄清 :)
  • 我仍然对formData.entires() 没有简单地出现在console.log 中感到沮丧。浪费了这么多令人沮丧的时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-24
  • 2020-12-11
  • 2020-06-02
  • 2019-04-05
  • 1970-01-01
  • 2014-06-08
  • 2016-03-09
相关资源
最近更新 更多