ホームページ  >  記事  >  バックエンド開発  >  Go で単一の HTTP リクエストから PDF ファイルと JSON データの両方を解析する方法

Go で単一の HTTP リクエストから PDF ファイルと JSON データの両方を解析する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-24 15:06:02397ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。