This is a creation in Article, where the information may have evolved or changed.
Paste the code directly.
Service side:
Package Mainimport ("FMT" "io" "io/ioutil" "Net/http") func Main () {http. Handlefunc ("/upload", upload) http. Listenandserve (": 8080", nil)}func upload (w http. Responsewriter, R *http. Request) {reader, err: = R.multipartreader () if err! = Nil {fmt. Fprintln (W, err) return}for {part, err: = Reader. Nextpart () If err = = Io. EOF {break}if Err! = Nil {fmt. fprintf (W, "Unexpected error:%s\n", err) break}data, err: = Ioutil. ReadAll (part) if err! = Nil {fmt. Fprintln (W, err) continue}fmt. Printf ("FormName (%s), FileName (%s) =>%s\n", part. FormName (), part. FileName (), String (data)}}
Client:
Package Mainimport ("bytes" "FMT" "Io/ioutil" "Mime/multipart" "Net/http") func main () {var buff bytes. Bufferwriter: = multipart. Newwriter (&buff) writer. Writefield ("Field", "This is a field") W, _: = writer. Createformfile ("File", "Test.txt") W.write ([]byte ("This is a file") writer. Close () var client http. CLIENTRESP, Err: = client. Post ("Http://127.0.0.1:8080/upload", writer. Formdatacontenttype (), &buff) if err! = Nil {fmt. PRINTLN (Err) Return}defer resp. Body.close () data, _: = Ioutil. ReadAll (resp. Body) fmt. PRINTLN (String data)}