在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中文網其他相關文章!