首页 > 解决方案 > 如何将我本地系统中的图像传递给表单数据并传递该表单数据以通过 Axios 执行发布请求

问题描述

我无法在 axios 中正确传递表单数据,得到错误代码 422。有关参考,请参见下面的代码。在 curl 请求中提到我们必须传递标头和表单数据我想我已经完成了所有正确的操作,不确定表单数据。请查看它。

app.post("/images", async (req, res) => {
  try {
    var formData = new FormData();

    const headers = {
      "Content-Type": "multipart / form-data",
    };

    let resp = await axios.post(
      "http://localhost:3000/api/v1/products/19/images",
      null, {
        headers: headers,
        params: {
          token: "myToken",
        },
        formData: {
          "image[attachment]": "riceBasm2.jpeg",
          type: "image/jpeg",
        }
      }
    );
    console.log(resp);
    return;
  } catch (err) {
    console.log(err);
  }

  res.send("Image added succesfully");
});

标签: node.jsruby-on-railscurlaxios

解决方案


当我提到请求与邮递员一起工作时,我终于得到了答案,所以我搜索了邮递员代码部分并得到了答案。邮递员包含每种语言的代码,所以请检查一下你是否卡住了,当你的查询与邮递员一起工作但不是什么时候你用你自己的代码试试。

下面的代码在 Nodejs Axios 中

var axios = require('axios');
var FormData = require('form-data');
var fs = require('fs');
var data = new FormData();
data.append('image[attachment]', fs.createReadStream('/home/kiit/Bharatrath/riceBasm.jpeg'));

var config = {
  method: 'post',
  url: 'http://localhost:3000/api/v1/products/21/images?token=my_token',
  headers: { 
    'Content-Type': 'multipart/form-data', 
    'Cookie': 'adonis-session=1b341136aeb0e89d23810f453b28ad40qUCo9HjeNsqhVFl3U0xVd1%2BTlbyFwN7ECZLo7nHYoad4VeEWnEMwXd%2FHT%2BKtXVyYAF6cHway6vNRYZGWIvR5%2BitS%2BuPgL%2FXzS02i77v4BkAvbb23vKqEQ2lb2cukfpfp; adonis-session-values=dbc2abc0c3695f76625c2c1cde19c125E9yRs0sOPTuSSDFpMDgEwAHsXzYJ38p4Y9JReim06COj8QA212fBid4IjEKRTY%2BdlNgA8w5zWpWINrCV50ddONU0IGfUlUBCa9fejdMpdmWmd96N%2FGTbxSih2Fwd1rfSNXg7FsNuGhdcFvyagphawRsUb5xcOjgY2TztZ4CiXsKm2w6Laf8Ye4s4cEM7B2fnngsdD2w3ZczpFco0fpo6yS8JATgW2ze8v%2BVeALFVWhQ%3D', 
    ...data.getHeaders()
  },
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});

卷曲代码

curl --location --request POST 'http://localhost:3000/api/v1/products/21/images?token=2aff2732fa39f2064ac21dcfff63139cc20adb2122f8b500' \
--header 'Content-Type: multipart/form-data' \
--header 'Cookie: adonis-session=1b341136aeb0e89d23810f453b28ad40qUCo9HjeNsqhVFl3U0xVd1%2BTlbyFwN7ECZLo7nHYoad4VeEWnEMwXd%2FHT%2BKtXVyYAF6cHway6vNRYZGWIvR5%2BitS%2BuPgL%2FXzS02i77v4BkAvbb23vKqEQ2lb2cukfpfp; adonis-session-values=dbc2abc0c3695f76625c2c1cde19c125E9yRs0sOPTuSSDFpMDgEwAHsXzYJ38p4Y9JReim06COj8QA212fBid4IjEKRTY%2BdlNgA8w5zWpWINrCV50ddONU0IGfUlUBCa9fejdMpdmWmd96N%2FGTbxSih2Fwd1rfSNXg7FsNuGhdcFvyagphawRsUb5xcOjgY2TztZ4CiXsKm2w6Laf8Ye4s4cEM7B2fnngsdD2w3ZczpFco0fpo6yS8JATgW2ze8v%2BVeALFVWhQ%3D' \
--form 'image[attachment]=@/home/kiit/Bharatrath/riceBasm.jpeg'

推荐阅读