Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menghantar Borang Berbilang Bahagian dengan Fail Menggunakan Pakej `mime/multipart` dan `net/http` Go?
Panduan ini menyediakan penyelesaian untuk menghantar borang berbilang bahagian menggunakan pakej Go mime/multipart dan http.
Pertimbangkan HTML berikut markup:
<html> <head><title>Multipart Test</title></head> <body> <form action="/multipart" enctype="multipart/form-data" method="POST"> <label for="file"> Please select a File </label> <input>
Untuk pelaksanaan Go:
import ( "bytes" "io" "mime/multipart" "net/http" "os" ) // Upload file to google code func Upload(tarball string) (err os.Error) { // Create buffer buf := new(bytes.Buffer) // caveat IMO dont use this for large files, \ // create a tmpfile and assemble your multipart from there (not tested) w := multipart.NewWriter(buf) // Create a form field writer for field label label, err := w.CreateFormField("label") if err != nil { return err } // Write label field label.Write([]byte("label here")) // Create a form field writer for field summary summary, err := w.CreateFormField("summary") if err != nil { return err } // Write summary field summary.Write([]byte("summary here")) // Create file field fw, err := w.CreateFormFile("upload", tarball) if err != nil { return err } fd, err := os.Open(tarball) if err != nil { return err } defer fd.Close() // Write file field from file to upload _, err = io.Copy(fw, fd) if err != nil { return err } // Important if you do not close the multipart writer you will not have a // terminating boundry w.Close() req, err := http.NewRequest("POST", repoUrl, buf) if err != nil { return err } req.Header.Set("Content-Type", w.FormDataContentType()) req.SetBasicAuth("[email protected]", "password") res, err := client.Do(req) if err != nil { return err } io.Copy(os.Stderr, res.Body) // Replace this with Status.Code check return err }
Atas ialah kandungan terperinci Bagaimana untuk Menghantar Borang Berbilang Bahagian dengan Fail Menggunakan Pakej `mime/multipart` dan `net/http` Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!