如何将本地系统中的图像传递到表单数据,以及如何通过Axios传递该表单数据以执行发布请求

时间:2020-07-15 04:46:32

标签: node.js ruby-on-rails curl axios

我无法在axios中正确传递表单数据,得到错误代码422。有关参考,请参见以下代码。在curl请求中,提到我们必须传递标头和表单数据,我想我已经做了一切正确的事情,不确定是否对form-data。请仔细研究一下。

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");
});

1 个答案:

答案 0 :(得分:0)

我终于得到答案,因为我提到请求可以与邮递员一起使用,所以我搜索了邮递员代码部分,就得到了答案。邮递员在每种语言中都包含代码,因此请检查一下是否卡住以及查询何时与邮递员一起工作但是当您使用自己的代码尝试时不会。

下面的代码在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'