当前位置: 首页 > 面试题库 >

在Go中读取请求有效载荷?

马亮
2023-03-14
问题内容

我正在使用文件上传器,并且需要请求有效负载中的详细信息以进行裁剪。

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.
}

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

内容处置:表单数据;name =“ avatar_data”

{“ x”:528,“ y”:108,“高度”:864,“宽度”:864}

所以从avatar_data我所需要的xyheight,和width。我知道我必须封送JSON,但是我不确定如何达到这一点?


问题答案:

multipart.Part实现io.Reader接口。

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.
}


 类似资料:
  • 问题内容: 我正在使用 PHP , ExtJS 和 ajax存储 。 它不通过POST或GET发送数据(在创建,更新,销毁时)。在 Chrome控制台中, 我在“ 请求有效负载 ”字段中看到我的传出参数为JSON 。 $ _POST 和 $ _GET 为空。 如何在PHP中检索它? 问题答案: 如果我正确理解这种情况,那么您只是通过http正文传递了json数据,而不是数据。 您可以使用以下代码段

  • 问题内容: 我有一个向我的Java Servlet发送POST请求的javascript库,但是在该方法中,我似乎无法获取请求有效内容。在chrome Developer Tools中,所有内容都位于标头标签的“请求有效负载”部分中,并且内容在那里,而且我知道doPost方法正在接收POST,但它只是空白。 对于 对象,我可以通过什么方式在请求有效负载中获取数据? 这样做 两者最终都没有数据 问题

  • 在一个非常简单的任务中,我遗漏了一些东西:我必须检查传入的请求inputstream是否被gzip压缩并解压缩其内容。这不需要使用内容类型。我想到了这样的事情: 检查请求是否已gzip: 解压缩它,如果它确实是gzied: 我的问题是,新的GZIPInputStream(request.getInputStream())总是抛出“非gzip格式”异常。我错过了什么?

  • 我正在研究一个播放器的集成,该播放器必须在浏览器中播放由Widevine DRM保护的流。 我查了一些知名玩家: DashJs-https://github.com/Dash-Industry-Forum/dash.js/wiki 幸运的是,这些播放器提供了一些使用Widevine DRM保护的流的示例。 我的问题涉及XHR执行以检索DRM密钥。在任何Widevine安全流中,我可以看到(在dev

  • 我这里有个小问题。在触发请求时,我希望使用HMAC对整个消息进行签名,并将生成的签名添加到头中。 所以我实施了 在的 方法I无法访问实体的字符串表示形式。它总是返回一个空字符串。原因似乎是在WriterInterceptor之后执行的MessageBodyWriter。 基本上,我有以下两种情况: 在这里,do某位SuffBackPayload(有效载荷)方法不起作用,因为有效载荷总是空的。 我以

  • 问题内容: 下面的Go代码读取10,000条记录的CSV(时间戳和浮点数),对数据进行一些操作,然后将原始值以及的附加列写入到另一个CSV中。但是,它的运行速度非常慢(例如,数小时,但大部分时间是),我很好奇我可以处理的CSV读取/写入是否效率低下。 我正在寻求帮助,以使此CSV读/写模板代码尽快。对于此问题的范围,我们不必担心该方法。 问题答案: 您先将文件加载到内存中,然后再对其进行处理,这对