ホームページ  >  記事  >  バックエンド開発  >  Go の「multipart/form-data」を使用してファイルとフォーム データを POST するにはどうすればよいですか?

Go の「multipart/form-data」を使用してファイルとフォーム データを POST するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-25 09:48:38581ブラウズ

How do I POST Files and Form Data Using Go's `multipart/form-data`?

マルチパート/フォーム データ リクエストの POST ファイル

マルチパート リクエストはファイルのアップロードに頻繁に使用され、ファイルとともに追加のフォーム データを送信する必要があります。 Go の mime/multipart および http パッケージを使用してこれにどのように取り組むことができるかを見てみましょう。

次の HTML フォームについて考えてみましょう:

<form action="/multipart" enctype="multipart/form-data" method="POST">
  <label for="file">Please select a File</label>
  <input>

Go では、このマルチパート リクエストを次のように送信できます。

import (
  "bytes"
  "io"
  "mime/multipart"
  "net/http"
)

var buffer bytes.Buffer
w := multipart.NewWriter(&buffer)

// Write form fields
w.CreateFormField("input1")
w.WriteField("input1", "value1")

// Prepare to write a file
fd, err := os.Open("filename.dat")
if err != nil {
  return err
}

// Create a form field for the file
fw, err := w.CreateFormFile("file", fd.Name())
if err != nil {
  return err
}

// Copy file contents into form field
if _, err := io.Copy(fw, fd); err != nil {
  return err
}

// Close writer
w.Close()

// Prepare request
resp, err := http.Post(url, w.FormDataContentType(), &buffer)
if err != nil {
  return err
}

マルチパートリクエストでファイルを送信する鍵は、 *multipart.Writer は、ファイル専用のフォーム フィールドを作成します。作成したら、io.Copy を使用してファイルの内容をこのフォーム フィールドに書き込むことができます。

以上がGo の「multipart/form-data」を使用してファイルとフォーム データを POST するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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