Skip to content
Snippets Groups Projects
Commit db9cc3c4 authored by Ophestra's avatar Ophestra
Browse files

potential fix of multipart form submit

parent 4a62b452
No related branches found
No related tags found
No related merge requests found
......@@ -2,6 +2,8 @@ package client
import (
"bytes"
"fmt"
"io"
"mime/multipart"
"net/http"
"random.chars.jp/git/image-board/api"
......@@ -17,13 +19,21 @@ func (r *Remote) Images() ([]string, error) {
}
// ImageAdd adds an image to Remote and returns a store.Image.
func (r *Remote) ImageAdd(data []byte) (store.Image, error) {
func (r *Remote) ImageAdd(reader io.Reader) (store.Image, error) {
if c, ok := reader.(io.Closer); ok {
defer func() {
if err := c.Close(); err != nil {
fmt.Printf("Error closing Closer, %s", err)
}
}()
}
buf := &bytes.Buffer{}
w := multipart.NewWriter(buf)
if f, err := w.CreateFormFile("image", ""); err != nil {
if f, err := w.CreateFormField("image"); err != nil {
return store.Image{}, err
} else {
if _, err = f.Write(data); err != nil {
if _, err = io.Copy(f, reader); err != nil {
return store.Image{}, err
}
}
......@@ -32,12 +42,18 @@ func (r *Remote) ImageAdd(data []byte) (store.Image, error) {
return store.Image{}, err
}
if resp, err := r.request(http.MethodPost, api.Image, buf); err != nil {
if req, err := http.NewRequest(http.MethodPost, r.URL(api.Image), buf); err != nil {
return store.Image{}, err
} else {
var image store.Image
err = unmarshal(resp.Body, &image)
return image, err
req.Header.Set("Content-Type", w.FormDataContentType())
var resp *http.Response
if resp, err = r.send(req); err != nil {
return store.Image{}, err
} else {
var image store.Image
err = unmarshal(resp.Body, &image)
return image, err
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment