首页 > 后端开发 > Golang > 正文

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

Susan Sarandon
发布: 2024-10-24 17:06:02
原创
793 人浏览过

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

<code class="go">mr, err := r.MultipartReader()
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}</code>
登录后复制

第 2 步:处理每个部分

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

<code class="go">part, err := mr.NextPart()
if err == io.EOF {
    break
}
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}</code>
登录后复制

第 3 步:提取文件数据

如果该部分是一个文件 ( part.FormName() == "file"):

<code class="go">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
}</code>
登录后复制

第 4 步:解析 JSON 数据

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

<code class="go">jsonDecoder := json.NewDecoder(part)
err = jsonDecoder.Decode(&amp;doc)
if err != nil {
    http.Error(w, err.Error(), http.StatusInternalServerError)
    return
}</code>
登录后复制

第 5 步:后处理

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

以上是如何在 Golang 中解析来自 HTTP 请求的文件和 JSON 数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!