sdfsdnfslk 发表于 2018-9-20 10:31:23

Golang模拟客户端POST表单功能文件上传

package main  import (
  "bytes"
  "fmt"
  "io"
  "io/ioutil"
  "mime/multipart"
  "net/http"
  "os"
  )
  func postFile(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()
  //iocopy
  _, 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
  }
  // sample usage
  func main() {
  target_url := "http://localhost/upload"
  filename := "./example.pdf"
  postFile(filename, target_url)
  }

页: [1]
查看完整版本: Golang模拟客户端POST表单功能文件上传