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)
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 求解vmware的网络模式问题
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
  • ¥15 springboot 3.0 实现Security 6.x版本集成
  • ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
  • ¥30 请帮我解决一下下面六个代码
  • ¥15 关于资源监视工具的e-care有知道的嘛
  • ¥35 MIMO天线稀疏阵列排布问题
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?