首頁 >後端開發 >Golang >如何使用 Go 的'multipart/form-data”發布文件和表單資料?

如何使用 Go 的'multipart/form-data”發布文件和表單資料?

DDD
DDD原創
2024-11-25 09:48:38671瀏覽

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 上的CreateFormFile 建立一個專門用於檔案的表單欄位。創建後,我們可以使用 io.Copy 將文件內容寫入此表單欄位。

以上是如何使用 Go 的'multipart/form-data”發布文件和表單資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn