【问题标题】:How I can fetch images from JSON object and pass it to form-data如何从 JSON 对象中获取图像并将其传递给表单数据
【发布时间】:2020-11-05 17:13:12
【问题描述】:

您可以在下面看到 json 对象它具有图像字段。我想从该字段中获取图像并将其传递给表单数据,然后我想传递该表单数据以通过 Axios 执行发布请求。发布请求接受 multipart/form-data 作为标头和用于身份验证的令牌和 form-data 作为数据。

 {
"id": 4,
"title": "myProduct ",
"description": "",
"price": "64/Kg",
"subcode": "subcode1",
"status": "active",
"user_id": 4,
"category_id": 1,
"slug": "anything",
"created_at": "2019-01-03 20:30",
"updated_at": "2019-06-11 11:49",
"gst": 5,
"vendor_id": 1,
"rank": null,
"fresh": 0,
"delivery_id": 1,
"buffer_time": 12,
"discount": null,
"subscribed": null,
"subcategory_id": null,
"commission": null,
"images": [
{
"id": 137,
"src": "https://anything/1547719669239.jpeg",
"product_id": 4
}
]
}

这就是我必须提出请求的方式,我收到错误状态 422 UNPROCESSABLE ENTITY 请查看它

curl -i -X 发布
-H "X-Token: USER_TOKEN"
-H "内容类型:multipart/form-data"
-F "图像[附件]=@/absolute/path/to/image.jpg"
-F "类型=图像/jpeg"
https://localhost:3000/anything/images

我尝试过的代码如下

   app.post("/images",async(req,res)=>{
        try{
            var formData = new FormData();
            formData.append("image[attachment]",items[4].images[0].src,{type:"image/jpeg"});
            const headers = {
                "Content-Type" :"multipart/form-data",
            }
            
            let resp = await axios.post(" https://localhost:3000/anything/images",formData,{
                headers:headers,
                params:{
                    token:"mytoken"
                },
            })
            console.log(resp.status);
            return;
        }catch(err){
            console.log(err);
        }
        
        res.send("Outside"

); })

【问题讨论】:

  • 如果您尝试过任何方法,请告诉我们吗?如果是,请同时发布代码。
  • 到现在什么都没有

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


【解决方案1】:

我解决了这个问题,首先将图像下载到我的本地系统并像这样传递它 data.append('image[attachment]', fs.createReadStream('/home/images/riceBasm.jpeg'));

由于请求与邮递员合作,所以我检查了邮递员的代码部分,我在那里找到了这段代码。因此,如果您遇到困难并且请求正在使用邮递员但您的代码失败,请检查邮递员代码部分。

【讨论】:

    【解决方案2】:

    这是你可以继续的:

    let formData = new FormData();
    formData.append('file', Obj.images[0].src);
    this.$axios.post('/v1/candidate/attachment',formData)
        .then((objResponse) => {
                       
        },
        (objError) => {
                        
     });
    

    【讨论】:

    • 这对我来说看起来不错,该代码有什么问题吗?不过,我建议您使用 axios 拦截器来传递您的令牌。
    • 不,代码没有任何问题,但我无法通过此帖子请求添加图像我收到异常,例如 {exception : "param is missing or value is empty:image"}
    • 您可能会收到一个名为“image”的数组,其中包含参数“attachment”,因为您使用了“image[attachment]”。
    • 你说的是json对象吗?
    • 就像使用邮递员做这个发布请求时一切都很好,但是在用脚本做同样的事情时出错
    【解决方案3】:

    比方说,这里的对象名是Obj,那么你就可以访问图片src by

    Obj.images[0].src

    【讨论】:

    • 以及如何将其附加到表单数据中,例如 formdata.append("image",Obj.images[0].src)?这是正确的方式,如果不是,请您建议正确的方式
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    相关资源
    最近更新 更多