在Web 應用程式中,在HTTP 請求中同時接收文件和JSON 資料是很常見的。要成功處理這些元素,必須了解如何有效地解析它們。
考慮這樣一個場景,您有一個 AngularJS 前端向 Go 後端發送請求。該請求包含檔案(“file”)和 JSON 資料(“doc”)。您的目標是解析此請求中的 PDF 檔案和 JSON 資料。
要解決此問題,您需要單獨處理文件和 JSON 資料。透過利用 http.(*Request).MultipartReader() 並使用 NextPart() 迭代各部分,您可以提取並解析每個元素。
mr, err := r.MultipartReader()
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
對於多部分請求中的每個部分:
part, err := mr.NextPart()
if err == io.EOF {
break
}
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
如果零件是檔案(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
}
如果零件包含JSON資料(part.FormName() == "doc"):
jsonDecoder := json.NewDecoder(part)
err = jsonDecoder.Decode(&doc)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
解析文件和JSON 資料後,您可以執行任何必要的後處理,例如將其保存到資料庫或向客戶端發送回應.
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3