Heim >Backend-Entwicklung >Golang >Wie handhabe ich Datei-Uploads in Multipart-/Formulardaten-POST-Anfragen mit Go ordnungsgemäß?
Im Zusammenhang mit dem Senden eines Multipart-Formulars mithilfe der Mime/Multipart- und http-Pakete von Go können bestimmte Probleme auftreten erfordern eine Fehlerbehebung. Schauen wir uns einen konkreten Fall im Zusammenhang mit der Erstellung eines Dateifelds an.
Sie haben den folgenden Code und versuchen, ein mehrteiliges Formular mit Textfeldern und einer Datei zu senden:
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 } // ... }
Sie haben jedoch Probleme damit, einen Reader zu erhalten, um die Datei in die Datei Field Writer FW einzulesen.
Um dieses Problem zu lösen, müssen Sie die Datei mit os.Open öffnen und die zurückgegebene *os.File als io.Writer an die CreateFormFile-Funktion übergeben. Hier ist der korrigierte Code:
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 } // ... }
Mit dieser Änderung wird der Inhalt der Datei korrekt in das mehrteilige Formular geschrieben, sodass Sie sowohl Textfelder als auch eine Datei erfolgreich senden können.
Das obige ist der detaillierte Inhalt vonWie handhabe ich Datei-Uploads in Multipart-/Formulardaten-POST-Anfragen mit Go ordnungsgemäß?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!