이 가이드는 Go 패키지 mime/multipart 및 http를 사용하여 멀티파트 양식을 보내는 솔루션을 제공합니다.
다음 HTML을 고려해보세요 마크업:
<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>
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 }
위 내용은 Go\의 `mime/multipart` 및 `net/http` 패키지를 사용하여 파일과 함께 다중 부분 양식을 보내는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!