|
- package main
-
- import (
- "bytes"
- "fmt"
- "io"
- "io/ioutil"
- "mime/multipart"
- "net/http"
- "os"
- )
-
- //post a file to a url
- func postFileForm(filename string, targetURL string, formFieldName string) (strJSON string, err error) {
- bodyBuf := &bytes.Buffer{}
- bodyWriter := multipart.NewWriter(bodyBuf)
-
- // this step is very important
- fileWriter, err := bodyWriter.CreateFormFile(formFieldName, filename)
- if err != nil {
- fmt.Println(err)
- return "", err
- }
-
- // open file handle
- fh, err := os.Open(filename)
- if err != nil {
- fmt.Println(err)
- return "", err
- }
-
- //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()
- r, err := ioutil.ReadAll(resp.Body)
- strJSON = string(r)
- if err != nil {
- return "", err
- }
- fmt.Println(resp.Status)
- fmt.Println(string(strJSON))
- return strJSON, nil
- }
-
- func postJSON(jsonB []byte, targetURL string) (resp string, err error) {
- req, err := http.NewRequest("POST", targetURL, bytes.NewBuffer(jsonB))
- if err != nil {
- return
- }
- client := &http.Client{}
- r, err := client.Do(req)
- if err != nil {
- return
- }
- defer r.Body.Close()
- b, _ := ioutil.ReadAll(r.Body)
- resp = string(b)
- return
- }
|