Go의 단일 HTTP 요청에서 PDF 파일과 JSON 데이터를 동시에 구문 분석
여러 부분 양식 데이터가 포함된 HTTP 요청을 처리할 때 다음이 가능합니다. 동일한 요청에서 파일과 JSON 데이터를 모두 구문 분석해야 합니다. 일반적인 예로는 사용자가 문서(PDF)를 업로드하고 해당 파일과 관련된 추가 데이터(JSON)를 제공할 수 있는 양식이 있습니다.
Go에서 이를 달성하려면 r.ParseMultipartForm 함수는 구문 분석만 하기 때문에 충분하지 않습니다. 다중 부분 데이터. 파일과 JSON 데이터를 별도로 처리하려면 r.MultipartReader 함수가 필요합니다.
해결책:
r.MultipartReader 함수는 다음과 같은 multipart.Reader 개체를 반환합니다. r.NextPart 함수를 사용하여 다중 부분 양식 데이터의 각 부분을 반복할 수 있습니다. 이를 통해 파일 부분과 JSON 부분을 구별하여 각 부분을 개별적으로 처리할 수 있습니다.
다음은 핸들러 기능의 업데이트된 버전입니다.
<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() if err == io.EOF { break } if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } if part.FormName() == "file" { doc.Url = part.FileName() 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 } } if part.FormName() == "doc" { jsonDecoder := json.NewDecoder(part) err = jsonDecoder.Decode(&doc) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return }</code>
위 내용은 Go의 단일 HTTP 요청에서 PDF 파일과 JSON 데이터를 모두 구문 분석하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!