在 Web 应用程序中,在 HTTP 请求中同时接收文件和 JSON 数据是很常见的。要成功处理这些元素,必须了解如何有效地解析它们。
考虑一个场景,其中您有一个 AngularJS 前端向 Go 后端发送请求。该请求包含文件(“file”)和 JSON 数据(“doc”)。您的目标是解析此请求中的 PDF 文件和 JSON 数据。
要解决此问题,您需要单独处理文件和 JSON 数据。通过利用 http.(*Request).MultipartReader() 并使用 NextPart() 迭代各部分,您可以提取并解析每个元素。
<code class="go">mr, err := r.MultipartReader() if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return }</code>
对于多部分请求中的每个部分:
<code class="go">part, err := mr.NextPart() if err == io.EOF { break } if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return }</code>
如果该部分是一个文件 ( 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>
如果部件包含 JSON 数据 (part.FormName() == "doc" ):
<code class="go">jsonDecoder := json.NewDecoder(part) err = jsonDecoder.Decode(&doc) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return }</code>
解析文件和 JSON 数据后,您可以执行任何必要的后处理,例如将其保存到数据库或发送回复客户。
以上是如何在 Golang 中解析来自 HTTP 请求的文件和 JSON 数据?的详细内容。更多信息请关注PHP中文网其他相关文章!