aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chrislusf@users.noreply.github.com>2020-07-27 10:35:37 -0700
committerGitHub <noreply@github.com>2020-07-27 10:35:37 -0700
commitbfa07af326a7ae2a015a7dd1235b1c6b10966d2c (patch)
tree95f0ecb6c96f8b54017ab80a02d18684b0f81742
parent37e964d4bd60a9dd792a9cc24f05eaa05d3766f2 (diff)
parent92c32f9d46c6cf817ca447b20c4919dfd7978624 (diff)
downloadseaweedfs-bfa07af326a7ae2a015a7dd1235b1c6b10966d2c.tar.xz
seaweedfs-bfa07af326a7ae2a015a7dd1235b1c6b10966d2c.zip
Merge pull request #1404 from hilimd/master
S3 PutObject: fix create folder bug
-rw-r--r--weed/s3api/s3api_object_handlers.go21
1 files changed, 14 insertions, 7 deletions
diff --git a/weed/s3api/s3api_object_handlers.go b/weed/s3api/s3api_object_handlers.go
index d62dbff3d..9773add81 100644
--- a/weed/s3api/s3api_object_handlers.go
+++ b/weed/s3api/s3api_object_handlers.go
@@ -57,16 +57,23 @@ func (s3a *S3ApiServer) PutObjectHandler(w http.ResponseWriter, r *http.Request)
}
defer dataReader.Close()
- uploadUrl := fmt.Sprintf("http://%s%s/%s%s", s3a.option.Filer, s3a.option.BucketsPath, bucket, object)
+ if strings.HasSuffix(object, "/") {
+ if err := s3a.mkdir(s3a.option.BucketsPath, bucket+object, nil); err != nil {
+ writeErrorResponse(w, ErrInternalError, r.URL)
+ return
+ }
+ } else {
+ uploadUrl := fmt.Sprintf("http://%s%s/%s%s", s3a.option.Filer, s3a.option.BucketsPath, bucket, object)
- etag, errCode := s3a.putToFiler(r, uploadUrl, dataReader)
+ etag, errCode := s3a.putToFiler(r, uploadUrl, dataReader)
- if errCode != ErrNone {
- writeErrorResponse(w, errCode, r.URL)
- return
- }
+ if errCode != ErrNone {
+ writeErrorResponse(w, errCode, r.URL)
+ return
+ }
- setEtag(w, etag)
+ setEtag(w, etag)
+ }
writeSuccessResponseEmpty(w)
}