Go の mime/multipart および http パッケージを使用してマルチパート フォームを送信するコンテキストでは、特定の問題が発生する可能性があります。トラブルシューティングが必要です。ファイル フィールドの作成に関連する具体的なケースを詳しく見てみましょう。
次のコードがあり、テキスト フィールドとファイルの両方を含むマルチパート フォームを送信しようとしています:
func main() { // ... // Create a file field fw, err := w.CreateFormFile("file", "filename.dat") if err != nil { return err } // ... // Send the request resp, err := http.Post(url, w.FormDataContentType(), &buffer) if err != nil { return err } // ... }
しかし、ファイルフィールドライターにファイルを読み取るための Reader を取得する方法に苦労しています。 fw.
この問題を解決するには、os.Open を使用してファイルを開き、返された *os.File を io.Writer として CreateFormFile 関数に渡す必要があります。修正されたコードは次のとおりです:
import ( "bytes" "io" "mime/multipart" "net/http" "os" ) func main() { // ... // Open the file fd, err := os.Open("filename.dat") if err != nil { return err } // Create a file field fw, err := w.CreateFormFile("file", "filename.dat") if err != nil { return err } // Copy the file contents into the file field writer _, err = io.Copy(fw, fd) if err != nil { return err } // ... // Send the request resp, err := http.Post(url, w.FormDataContentType(), &buffer) if err != nil { return err } // ... }
この変更により、ファイルの内容がマルチパート フォームに正しく書き込まれ、テキスト フィールドとファイルの両方を正常に送信できるようになります。
以上がGo でマルチパート/フォームデータの POST リクエストでファイルのアップロードを適切に処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。