
客户端通过multipart.Write把文件的文本流写入一个缓存中,然后调用http的Post方法把缓存传到服务器。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
package main
import ( "bytes" "fmt" "io" "io/ioutil" "mime/multipart" "net/http" "os" )
func (filename string, targetUrl string) error { bodyBuf := &bytes.Buffer{} bodyWriter := multipart.NewWriter(bodyBuf)
fileWriter, err := bodyWriter.CreateFormFile("uploadfile", filename) if err != nil { fmt.Println("error writing to buffer") return err }
fh, err := os.Open(filename) if err != nil { fmt.Println("error opening file") return err } defer fh.Close()
_, err = io.Copy(fileWriter, fh) if err != nil { return err }
contentType := bodyWriter.FormDataContentType() bodyWriter.Close()
resp, err := http.Post(targetUrl, contentType, bodyBuf) if err != nil { return err } defer resp.Body.Close() resp_body, err := ioutil.ReadAll(resp.Body) if err != nil { return err } fmt.Println(resp.Status) fmt.Println(string(resp_body)) return nil }
func main() { target_url := "http://localhost/upload" filename := "./example.pdf" postFile(filename, target_url) }
|
近期评论