使用 Go 解析来自单个 HTTP 请求的文件和 JSON 数据
在单个 HTTP 请求中解析来自多个源的数据可能具有挑战性。在本例中,我们将同时接收 PDF 文件和 JSON 数据作为单独的部分。为了有效处理这种情况,Go 提供了 multipart/form-data 包。
解决方案:
解决这个问题的关键是使用 r.MultipartReader() 。该函数返回一个 mime/multipart.Reader 对象,允许我们迭代请求的每个部分并单独处理它们。修改后的代码如下:
<code class="go">func (s *Server) PostFileHandler(w http.ResponseWriter, r *http.Request) { mr, err := r.MultipartReader() if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } doc := Doc{} for { part, err := mr.NextPart() // End of parts if err == io.EOF { break } // Handle PDF 'file' part if part.FormName() == "file" { // ... PDF processing code } // Handle JSON 'doc' part if part.FormName() == "doc" { jsonDecoder := json.NewDecoder(part) err = jsonDecoder.Decode(&doc) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } // ... JSON processing code } } // ... Database insertion and response handling code }</code>
使用这种方法,我们可以分别解析 PDF 文件和 JSON 数据,确保请求的两部分都得到正确处理。
以上是如何用Go有效解析HTTP请求中的多源数据?的详细内容。更多信息请关注PHP中文网其他相关文章!