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

报告相同问题?

悬赏问题

  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行