Могу ли я загрузить изображение в Imgur через Golang - PullRequest
0 голосов
/ 22 ноября 2018

Я хочу загрузить изображение в Imgur через Golang (framework: Gin)

Как и интерфейс [загрузить]> [golang]> [imgur]> [ответ]> [DB]

Мой код:

 APIURL := "https://api.imgur.com/3/image"
 file, err := c.FormFile("FILE")
 if err != nil{
   panic(err)
 }
 fileOpen,err := file.Open()
 if err != nil{
   panic(err)
 }
 defer fileOpen.Close()
 req, _ := http.NewRequest("POST",APIURL,strings.NewReader("image="+file.Filename))
 req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
 req.Header.Add("Authorization", "Bearer ---------------------------")
 req.Header.Add("Cache-Control", "no-cache")
 client := &http.Client{}
 res, _ := client.Do(req)
 defer res.Body.Close()
 body, _ := ioutil.ReadAll(res.Body)
 fmt.Println(res)
 fmt.Println(string(body))

Это ответ "error":"No image data was sent to the upload api"

1 Ответ

0 голосов
/ 22 ноября 2018

Попробуйте эту функцию загрузки

// image is any reader
func upload(image io.Reader, token string) {
    var buf = new(bytes.Buffer)
    writer := multipart.NewWriter(buf)

    part, _ := writer.CreateFormFile("image", "dont care about name")
    io.Copy(part, image)

    writer.Close()
    req, _ := http.NewRequest("POST", "https://api.imgur.com/3/image", buf)
    req.Header.Set("Content-Type", writer.FormDataContentType())
    req.Header.Set("Authorization", "Bearer "+token)

    client := &http.Client{}
    res, _ := client.Do(req)
    defer res.Body.Close()
    b, _ := ioutil.ReadAll(res.Body)
    fmt.Println(string(b))
}
...