Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

55 linhas
1011B

  1. package main
  2. import (
  3. "bytes"
  4. "fmt"
  5. "io"
  6. "io/ioutil"
  7. "mime/multipart"
  8. "net/http"
  9. "os"
  10. )
  11. //post a file to a url
  12. func postFileForm(filename string, targetURL string, formFieldName string) (strJSON string, err error) {
  13. bodyBuf := &bytes.Buffer{}
  14. bodyWriter := multipart.NewWriter(bodyBuf)
  15. // this step is very important
  16. fileWriter, err := bodyWriter.CreateFormFile(formFieldName, filename)
  17. if err != nil {
  18. fmt.Println(err)
  19. return "", err
  20. }
  21. // open file handle
  22. fh, err := os.Open(filename)
  23. if err != nil {
  24. fmt.Println(err)
  25. return "", err
  26. }
  27. //iocopy
  28. _, err = io.Copy(fileWriter, fh)
  29. if err != nil {
  30. return "", err
  31. }
  32. contentType := bodyWriter.FormDataContentType()
  33. bodyWriter.Close()
  34. resp, err := http.Post(targetURL, contentType, bodyBuf)
  35. if err != nil {
  36. return "", err
  37. }
  38. defer resp.Body.Close()
  39. r, err := ioutil.ReadAll(resp.Body)
  40. strJSON = string(r)
  41. if err != nil {
  42. return "", err
  43. }
  44. fmt.Println(resp.Status)
  45. fmt.Println(string(strJSON))
  46. return strJSON, nil
  47. }