diff options
| author | Chris Lu <chrislusf@users.noreply.github.com> | 2017-01-08 10:30:40 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-01-08 10:30:40 -0800 |
| commit | b14332df96c5a51b5d21730d74b06ccb379b2657 (patch) | |
| tree | 7ade8269a6d1aed75c73b7882371637b008dbc2f /weed/operation | |
| parent | 13e7069eb9cd72f94e72acb8fbbc9dd0307da703 (diff) | |
| parent | da9b672d1bce089c7a74e6b4bb68bb68cc4097f2 (diff) | |
| download | seaweedfs-b14332df96c5a51b5d21730d74b06ccb379b2657.tar.xz seaweedfs-b14332df96c5a51b5d21730d74b06ccb379b2657.zip | |
Merge pull request #432 from sparklxb/master
support additional header name-value pairs
Diffstat (limited to 'weed/operation')
| -rw-r--r-- | weed/operation/submit.go | 6 | ||||
| -rw-r--r-- | weed/operation/upload_content.go | 21 |
2 files changed, 19 insertions, 8 deletions
diff --git a/weed/operation/submit.go b/weed/operation/submit.go index 1de6b544a..75d5afbde 100644 --- a/weed/operation/submit.go +++ b/weed/operation/submit.go @@ -155,7 +155,7 @@ func (fi FilePart) Upload(maxMB int, master string, secret security.Secret) (ret cm.DeleteChunks(master) } } else { - ret, e := Upload(fileUrl, baseName, fi.Reader, fi.IsGzipped, fi.MimeType, jwt) + ret, e := Upload(fileUrl, baseName, fi.Reader, fi.IsGzipped, fi.MimeType, nil, jwt) if e != nil { return 0, e } @@ -180,7 +180,7 @@ func upload_one_chunk(filename string, reader io.Reader, master, fileUrl, fid := "http://"+ret.Url+"/"+ret.Fid, ret.Fid glog.V(4).Info("Uploading part ", filename, " to ", fileUrl, "...") uploadResult, uploadError := Upload(fileUrl, filename, reader, false, - "application/octet-stream", jwt) + "application/octet-stream", nil, jwt) if uploadError != nil { return fid, 0, uploadError } @@ -198,6 +198,6 @@ func upload_chunked_file_manifest(fileUrl string, manifest *ChunkManifest, jwt s q := u.Query() q.Set("cm", "true") u.RawQuery = q.Encode() - _, e = Upload(u.String(), manifest.Name, bufReader, false, "application/json", jwt) + _, e = Upload(u.String(), manifest.Name, bufReader, false, "application/json", nil, jwt) return e } diff --git a/weed/operation/upload_content.go b/weed/operation/upload_content.go index a87784cad..30c7f1ea3 100644 --- a/weed/operation/upload_content.go +++ b/weed/operation/upload_content.go @@ -36,13 +36,13 @@ func init() { var fileNameEscaper = strings.NewReplacer("\\", "\\\\", "\"", "\\\"") -func Upload(uploadUrl string, filename string, reader io.Reader, isGzipped bool, mtype string, jwt security.EncodedJwt) (*UploadResult, error) { +func Upload(uploadUrl string, filename string, reader io.Reader, isGzipped bool, mtype string, pairMap map[string]string, jwt security.EncodedJwt) (*UploadResult, error) { return upload_content(uploadUrl, func(w io.Writer) (err error) { _, err = io.Copy(w, reader) return - }, filename, isGzipped, mtype, jwt) + }, filename, isGzipped, mtype, pairMap, jwt) } -func upload_content(uploadUrl string, fillBufferFunction func(w io.Writer) error, filename string, isGzipped bool, mtype string, jwt security.EncodedJwt) (*UploadResult, error) { +func upload_content(uploadUrl string, fillBufferFunction func(w io.Writer) error, filename string, isGzipped bool, mtype string, pairMap map[string]string, jwt security.EncodedJwt) (*UploadResult, error) { body_buf := bytes.NewBufferString("") body_writer := multipart.NewWriter(body_buf) h := make(textproto.MIMEHeader) @@ -59,6 +59,7 @@ func upload_content(uploadUrl string, fillBufferFunction func(w io.Writer) error if jwt != "" { h.Set("Authorization", "BEARER "+string(jwt)) } + file_writer, cp_err := body_writer.CreatePart(h) if cp_err != nil { glog.V(0).Infoln("error creating form file", cp_err.Error()) @@ -73,7 +74,17 @@ func upload_content(uploadUrl string, fillBufferFunction func(w io.Writer) error glog.V(0).Infoln("error closing body", err) return nil, err } - resp, post_err := client.Post(uploadUrl, content_type, body_buf) + + req, postErr := http.NewRequest("POST", uploadUrl, body_buf) + if postErr != nil { + glog.V(0).Infoln("failing to upload to", uploadUrl, postErr.Error()) + return nil, postErr + } + req.Header.Set("Content-Type", content_type) + for k, v := range pairMap { + req.Header.Set(k, v) + } + resp, post_err := client.Do(req) if post_err != nil { glog.V(0).Infoln("failing to upload to", uploadUrl, post_err.Error()) return nil, post_err @@ -86,7 +97,7 @@ func upload_content(uploadUrl string, fillBufferFunction func(w io.Writer) error var ret UploadResult unmarshal_err := json.Unmarshal(resp_body, &ret) if unmarshal_err != nil { - glog.V(0).Infoln("failing to read upload resonse", uploadUrl, string(resp_body)) + glog.V(0).Infoln("failing to read upload response", uploadUrl, string(resp_body)) return nil, unmarshal_err } if ret.Error != "" { |
