”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在 Golang 中解析来自 HTTP 请求的文件和 JSON 数据?

如何在 Golang 中解析来自 HTTP 请求的文件和 JSON 数据?

发布于2024-11-13
浏览:167

How to Parse Files and JSON Data from an HTTP Request in Golang?

在 Go 中解析来自 HTTP 请求的文件和 JSON 数据

在 Web 应用程序中,在 HTTP 请求中同时接收文件和 JSON 数据是很常见的。要成功处理这些元素,必须了解如何有效地解析它们。

问题

考虑这样一个场景,您有一个 AngularJS 前端向 Go 后端发送请求。该请求包含文件(“file”)和 JSON 数据(“doc”)。您的目标是解析此请求中的 PDF 文件和 JSON 数据。

解决方案

要解决此问题,您需要单独处理文件和 JSON 数据。通过利用 http.(*Request).MultipartReader() 并使用 NextPart() 迭代各部分,您可以提取并解析每个元素。

第 1 步:创建 Multipart Reader

mr, err := r.MultipartReader()
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}

第 2 步:处理每个部分

对于多部分请求中的每个部分:

part, err := mr.NextPart()
if err == io.EOF {
    break
}
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}

第3步:提取文件数据

如果部件是文件(part.FormName() == "file"):

outfile, err := os.Create("./docs/"   part.FileName())
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}
defer outfile.Close()

_, err = io.Copy(outfile, part)
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}

第4步:解析JSON数据

如果部件包含JSON数据(part.FormName() == "doc"):

jsonDecoder := json.NewDecoder(part)
err = jsonDecoder.Decode(&doc)
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}

第 5 步:后处理

解析文件和 JSON 数据后,您可以执行任何必要的后处理,例如将其保存到数据库或向客户端发送响应.

版本声明 本文转载于:1729747542如有侵犯,请联系[email protected]删除
最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3