aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlimd <limd@sugon.com>2020-07-28 00:58:42 +0800
committerlimd <limd@sugon.com>2020-07-28 00:58:42 +0800
commit92c32f9d46c6cf817ca447b20c4919dfd7978624 (patch)
tree95f0ecb6c96f8b54017ab80a02d18684b0f81742
parentf9ba5cd9860dfda244bf2a734d690b64966e8210 (diff)
downloadseaweedfs-92c32f9d46c6cf817ca447b20c4919dfd7978624.tar.xz
seaweedfs-92c32f9d46c6cf817ca447b20c4919dfd7978624.zip
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)
}