>백엔드 개발 >Golang >Go의 단일 HTTP 요청에서 PDF 파일과 JSON 데이터를 모두 구문 분석하는 방법은 무엇입니까?

Go의 단일 HTTP 요청에서 PDF 파일과 JSON 데이터를 모두 구문 분석하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-24 15:06:02530검색

How to Parse Both a PDF File and JSON Data from a Single HTTP Request in Go?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.