aboutsummaryrefslogtreecommitdiff
path: root/weed/s3api/s3api_object_handlers_multipart.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/s3api/s3api_object_handlers_multipart.go')
-rw-r--r--weed/s3api/s3api_object_handlers_multipart.go10
1 files changed, 8 insertions, 2 deletions
diff --git a/weed/s3api/s3api_object_handlers_multipart.go b/weed/s3api/s3api_object_handlers_multipart.go
index ba9886d66..2d9f8e620 100644
--- a/weed/s3api/s3api_object_handlers_multipart.go
+++ b/weed/s3api/s3api_object_handlers_multipart.go
@@ -33,8 +33,14 @@ const (
func (s3a *S3ApiServer) NewMultipartUploadHandler(w http.ResponseWriter, r *http.Request) {
bucket, object := s3_constants.GetBucketAndObject(r)
- // Check if bucket exists before creating multipart upload
- if err := s3a.checkBucket(r, bucket); err != s3err.ErrNone {
+ // Check if bucket exists, and create it if it doesn't (auto-create bucket)
+ if err := s3a.checkBucket(r, bucket); err == s3err.ErrNoSuchBucket {
+ // Auto-create bucket if it doesn't exist (requires Admin permission)
+ if !s3a.handleAutoCreateBucket(w, r, bucket, "NewMultipartUploadHandler") {
+ return
+ }
+ } else if err != s3err.ErrNone {
+ // Other errors (like access denied) should still fail
s3err.WriteErrorResponse(w, r, err)
return
}