在Go中读取请求载荷? [英] Read request payload in Go?

查看:142
本文介绍了在Go中读取请求载荷?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  func上传(w http .ResponseWriter,r * http.Request){
reader,err:= r.MultipartReader()
if err!= nil {
http.Error(w,err.Error(), http.StatusInternalServerError)
返回
}
//将每个部分复制到目标。
for {
part,err:= reader.NextPart()
if err == io.EOF {
break
}
if part.FormName ()==avatar_data{
//阅读avatar_data中的内容怎么样?

if part.FileName()=={
continue
}
dst,err:= os.Create(/ Users / macadmin / test /+ part.FileName())
推迟dst.Close()
if err!= nil {
http.Error(w,err.Error(),http.StatusInternalServerError)
返回
}
if _,err:= io.Copy(dst,part); err!= nil {

http.Error(w,err.Error(),http.StatusInternalServerError)
return
}
}
img, _:= images.Open(/ Users / macadmin / test / cry3.jpg)
if err!= nil {
panic(err)
}

rect:= image.Rect(0,0,200,500)
// rect:= image.Rectangle {20,20}
dst:= imaging.Crop(img,rect)
err = imaging.Save(dst,/Users/macadmin/test/cry4.jpg)
if err!= nil {
panic(err)
}
//显示成功消息。
}

我没有10位代表发布POST请求的图片,但它有

 
内容处理:form-data; name =avatar_data

{x:528,y:108,height:864,width:864}

因此,从avatar_data我需要 x y 高度宽度。我知道我必须编组JSON,但我不确定如何到达这一点? 解决方案

multipart.Part 实现了 io.Reader 接口。

  if part.FormName()==avatar_data {
j,err:= ioutil.ReadAll(part)
if err!= nil {
//做某事
}
// j == []字节(`{x:528,y:108,height:864,width:864}`),用它做点什么。
}


I'm using a file uploader and need details from the request payload to crop it.

func Upload(w http.ResponseWriter, r *http.Request) {
    reader, err := r.MultipartReader()
    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
        return
    }
    //copy each part to destination.
    for {
        part, err := reader.NextPart()
        if err == io.EOF {
            break
        }
        if part.FormName() == "avatar_data"{
           // Read the content in "avatar_data" how?
        }
        if part.FileName() == "" {
            continue
        }
        dst, err := os.Create("/Users/macadmin/test/" + part.FileName())
        defer dst.Close()
        if err != nil {
            http.Error(w, err.Error(), http.StatusInternalServerError)
            return
        }
        if _, err := io.Copy(dst, part); err != nil {

            http.Error(w, err.Error(), http.StatusInternalServerError)
            return
        }
    }
    img, _ := imaging.Open("/Users/macadmin/test/cry3.jpg")
    if err != nil {
        panic(err)
    }

    rect := image.Rect(0, 0, 200, 500)
    // rect := image.Rectangle{20,20}
    dst := imaging.Crop(img, rect)
    err = imaging.Save(dst, "/Users/macadmin/test/cry4.jpg")
    if err != nil {
        panic(err)
    }
    //display success message.
}

I don't have 10 rep to post the image of the POST request, but it has

Content-Disposition: form-data; name="avatar_data"

{"x":528,"y":108,"height":864,"width":864}

So from avatar_data I need the x, y, height, and width. I know I'll have to marshal the JSON but I'm not sure how to get to that point?

解决方案

multipart.Part implements the io.Reader interface.

if part.FormName() == "avatar_data" {
    j, err := ioutil.ReadAll(part)
    if err != nil {
        //do something
    }
    //j == []byte(`{"x":528,"y":108,"height":864,"width":864}`), do something with it.
}

这篇关于在Go中读取请求载荷?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆