dounie0889 2015-08-21 08:47
浏览 81
已采纳

如何在没有浏览器的情况下使用go将文件上传到服务器?

trsp := &http.Transport{
    TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
Url := "https://127.0.0.1:8080"
client := &http.Client{Transport: trsp}
request, _ := http.NewRequest("POST", Url, nil)
k, _ := os.Open(nameOfFile)
request.Header.Set("Action", "download"+k.Name())
...
...
client.Do(request)

I have server, and I need to upload to server a file. What should I do with request? As I think I shoud write into request.Body and then, from server handle this query

  • 写回答

1条回答 默认 最新

  • duanmi8349 2015-08-21 09:17
    关注

    you need use the "mime/multipart"package to make the http body. like this.

    http://matt.aimonetti.net/posts/2013/07/01/golang-multipart-file-upload-example/

    func newfileUploadRequest(uri string, params map[string]string, paramName, path string) (*http.Request, error) {
      file, err := os.Open(path)
      if err != nil {
          return nil, err
      }
      defer file.Close()
    
      body := &bytes.Buffer{}
      writer := multipart.NewWriter(body)
      part, err := writer.CreateFormFile(paramName, filepath.Base(path))
      if err != nil {
          return nil, err
      }
      _, err = io.Copy(part, file)
    
      for key, val := range params {
          _ = writer.WriteField(key, val)
      }
      err = writer.Close()
      if err != nil {
          return nil, err
      }
    
      return http.NewRequest("POST", uri, body)
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?