diff options
| author | Chris Lu <chris.lu@gmail.com> | 2018-09-09 16:25:43 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2018-09-09 16:25:43 -0700 |
| commit | 164091c269b1ff54c40329947cdf1dad37a527dc (patch) | |
| tree | 71bac8b171a7b6909293219f3ae6b13fff91c561 /weed/server | |
| parent | 9b3bf0e46c65ab8dfa980750cb1b805f08383df9 (diff) | |
| download | seaweedfs-164091c269b1ff54c40329947cdf1dad37a527dc.tar.xz seaweedfs-164091c269b1ff54c40329947cdf1dad37a527dc.zip | |
add s3 multipart upload
Diffstat (limited to 'weed/server')
| -rw-r--r-- | weed/server/filer_server_handlers_read.go | 1 | ||||
| -rw-r--r-- | weed/server/filer_server_handlers_write.go | 2 | ||||
| -rw-r--r-- | weed/server/volume_server_handlers_read.go | 5 | ||||
| -rw-r--r-- | weed/server/volume_server_handlers_write.go | 9 |
4 files changed, 12 insertions, 5 deletions
diff --git a/weed/server/filer_server_handlers_read.go b/weed/server/filer_server_handlers_read.go index e17cd776d..eaa8015a6 100644 --- a/weed/server/filer_server_handlers_read.go +++ b/weed/server/filer_server_handlers_read.go @@ -119,6 +119,7 @@ func (fs *FilerServer) handleMultipleChunks(w http.ResponseWriter, r *http.Reque if mimeType != "" { w.Header().Set("Content-Type", mimeType) } + setEtag(w, filer2.ETag(entry.Chunks)) totalSize := int64(filer2.TotalSize(entry.Chunks)) diff --git a/weed/server/filer_server_handlers_write.go b/weed/server/filer_server_handlers_write.go index 8a19f3fdb..2f9351fa1 100644 --- a/weed/server/filer_server_handlers_write.go +++ b/weed/server/filer_server_handlers_write.go @@ -150,6 +150,7 @@ func (fs *FilerServer) PostHandler(w http.ResponseWriter, r *http.Request) { return } defer resp.Body.Close() + etag := resp.Header.Get("ETag") resp_body, ra_err := ioutil.ReadAll(resp.Body) if ra_err != nil { glog.V(0).Infoln("failing to upload to volume server", r.RequestURI, ra_err.Error()) @@ -202,6 +203,7 @@ func (fs *FilerServer) PostHandler(w http.ResponseWriter, r *http.Request) { FileId: fileId, Size: uint64(ret.Size), Mtime: time.Now().UnixNano(), + ETag: etag, }}, } if db_err := fs.filer.CreateEntry(entry); db_err != nil { diff --git a/weed/server/volume_server_handlers_read.go b/weed/server/volume_server_handlers_read.go index 54f08971f..4da13883e 100644 --- a/weed/server/volume_server_handlers_read.go +++ b/weed/server/volume_server_handlers_read.go @@ -88,12 +88,11 @@ func (vs *VolumeServer) GetOrHeadHandler(w http.ResponseWriter, r *http.Request) } } } - etag := n.Etag() - if inm := r.Header.Get("If-None-Match"); inm == etag { + if inm := r.Header.Get("If-None-Match"); inm == "\""+n.Etag()+"\"" { w.WriteHeader(http.StatusNotModified) return } - w.Header().Set("Etag", etag) + setEtag(w, n.Etag()) if n.HasPairs() { pairMap := make(map[string]string) diff --git a/weed/server/volume_server_handlers_write.go b/weed/server/volume_server_handlers_write.go index d32958339..a0b142dea 100644 --- a/weed/server/volume_server_handlers_write.go +++ b/weed/server/volume_server_handlers_write.go @@ -44,8 +44,7 @@ func (vs *VolumeServer) PostHandler(w http.ResponseWriter, r *http.Request) { ret.Name = string(needle.Name) } ret.Size = size - etag := needle.Etag() - w.Header().Set("Etag", etag) + setEtag(w, needle.Etag()) writeJsonQuiet(w, r, httpStatus, ret) } @@ -173,3 +172,9 @@ func (vs *VolumeServer) batchDeleteHandler(w http.ResponseWriter, r *http.Reques writeJsonQuiet(w, r, http.StatusAccepted, ret) } + +func setEtag(w http.ResponseWriter, etag string) { + if etag != "" { + w.Header().Set("ETag", "\""+etag+"\"") + } +} |
