在Go中读取请求载荷? [英] Read request payload in Go?
本文介绍了在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屋!
查看全文