No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

73 líneas
1.3KB

  1. package main
  2. import (
  3. "bytes"
  4. "fmt"
  5. "io"
  6. "io/ioutil"
  7. "log"
  8. "mime/multipart"
  9. "net/http"
  10. "os"
  11. )
  12. //post a file to a url
  13. func postFileForm(filename string, targetURL string, formFieldName string) (strJSON string, err error) {
  14. bodyBuf := &bytes.Buffer{}
  15. bodyWriter := multipart.NewWriter(bodyBuf)
  16. // this step is very important
  17. fileWriter, err := bodyWriter.CreateFormFile(formFieldName, filename)
  18. if err != nil {
  19. fmt.Println(err)
  20. return "", err
  21. }
  22. // open file handle
  23. fh, err := os.Open(filename)
  24. if err != nil {
  25. fmt.Println(err)
  26. return "", err
  27. }
  28. //iocopy
  29. _, err = io.Copy(fileWriter, fh)
  30. if err != nil {
  31. return "", err
  32. }
  33. contentType := bodyWriter.FormDataContentType()
  34. bodyWriter.Close()
  35. resp, err := http.Post(targetURL, contentType, bodyBuf)
  36. if err != nil {
  37. return "", err
  38. }
  39. defer resp.Body.Close()
  40. r, err := ioutil.ReadAll(resp.Body)
  41. strJSON = string(r)
  42. if err != nil {
  43. return "", err
  44. }
  45. fmt.Println(resp.Status)
  46. fmt.Println(string(strJSON))
  47. return strJSON, nil
  48. }
  49. func postJSON(jsonB []byte, targetURL string) (resp string, err error) {
  50. req, err := http.NewRequest("POST", targetURL, bytes.NewBuffer(jsonB))
  51. if err != nil {
  52. return
  53. }
  54. client := &http.Client{}
  55. r, err := client.Do(req)
  56. if err != nil {
  57. return
  58. }
  59. defer r.Body.Close()
  60. b, _ := ioutil.ReadAll(r.Body)
  61. resp = string(b)
  62. log.Println(resp)
  63. return
  64. }