aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2024-07-08 10:20:07 -0700
committerchrislu <chris.lu@gmail.com>2024-07-08 10:20:09 -0700
commitf618121e63f6897e88e4c7f6b5df1f6c8f98f105 (patch)
tree1b44d4bf3fcecc6222a9801c94fa2de5b2252443
parente8c50e65b39f60a0e4b1d61bf32b125a224b8f70 (diff)
downloadseaweedfs-f618121e63f6897e88e4c7f6b5df1f6c8f98f105.tar.xz
seaweedfs-f618121e63f6897e88e4c7f6b5df1f6c8f98f105.zip
Fix S3 deletion in deep folders, and names with empty spaces
fix https://github.com/seaweedfs/seaweedfs/issues/5748
-rw-r--r--weed/s3api/s3api_object_handlers_delete.go5
1 files changed, 3 insertions, 2 deletions
diff --git a/weed/s3api/s3api_object_handlers_delete.go b/weed/s3api/s3api_object_handlers_delete.go
index 580578593..de05081b7 100644
--- a/weed/s3api/s3api_object_handlers_delete.go
+++ b/weed/s3api/s3api_object_handlers_delete.go
@@ -27,11 +27,12 @@ func (s3a *S3ApiServer) DeleteObjectHandler(w http.ResponseWriter, r *http.Reque
bucket, object := s3_constants.GetBucketAndObject(r)
glog.V(3).Infof("DeleteObjectHandler %s %s", bucket, object)
- object = urlPathEscape(removeDuplicateSlashes(object))
+ target := util.FullPath(fmt.Sprintf("%s/%s%s", s3a.option.BucketsPath, bucket, object))
+ dir, name := target.DirAndName()
s3a.WithFilerClient(false, func(client filer_pb.SeaweedFilerClient) error {
- err := doDeleteEntry(client, s3a.option.BucketsPath+"/"+bucket, object, true, false)
+ err := doDeleteEntry(client, dir, name, true, false)
if err != nil {
// skip deletion error, usually the file is not found
return nil