在使用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中文網其他相關文章!