diff options
| author | limd <limd@sugon.com> | 2020-07-28 00:58:42 +0800 |
|---|---|---|
| committer | limd <limd@sugon.com> | 2020-07-28 00:58:42 +0800 |
| commit | 92c32f9d46c6cf817ca447b20c4919dfd7978624 (patch) | |
| tree | 95f0ecb6c96f8b54017ab80a02d18684b0f81742 | |
| parent | f9ba5cd9860dfda244bf2a734d690b64966e8210 (diff) | |
| download | seaweedfs-92c32f9d46c6cf817ca447b20c4919dfd7978624.tar.xz seaweedfs-92c32f9d46c6cf817ca447b20c4919dfd7978624.zip | |
PutObject: fix create folder bug
| -rw-r--r-- | weed/s3api/s3api_object_handlers.go | 21 |
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) } |
