Dalam konteks menghantar borang berbilang bahagian menggunakan pakej mime/berbilang dan http Go, anda mungkin menghadapi isu tertentu yang memerlukan penyelesaian masalah. Mari kita mendalami kes khusus yang berkaitan dengan mencipta medan fail.
Anda mempunyai kod berikut dan cuba menghantar borang berbilang bahagian dengan kedua-dua medan teks dan fail:
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 } // ... }
Walau bagaimanapun, anda sedang bergelut dengan cara mendapatkan Pembaca untuk membaca fail ke dalam penulis medan fail fw.
Untuk menyelesaikan isu ini, anda perlu membuka fail menggunakan os.Buka dan hantar *os.File yang dikembalikan sebagai io.Writer kepada fungsi CreateFormFile. Berikut ialah kod yang diperbetulkan:
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 } // ... }
Dengan pengubahsuaian ini, kandungan fail akan ditulis dengan betul ke dalam borang berbilang bahagian, membolehkan anda menghantar kedua-dua medan teks dan fail dengan jayanya.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Muat Naik Fail dengan Betul dalam Permintaan POST Berbilang Bahagian/Data Borang dengan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!