diff --git a/weed/s3api/filer_multipart.go b/weed/s3api/filer_multipart.go
index 659cf4c96..e62d31690 100644
--- a/weed/s3api/filer_multipart.go
+++ b/weed/s3api/filer_multipart.go
@@ -6,6 +6,7 @@ import (
 	"fmt"
 	"github.com/chrislusf/seaweedfs/weed/s3api/s3err"
 	"golang.org/x/exp/slices"
+	"math"
 	"path/filepath"
 	"sort"
 	"strconv"
@@ -242,13 +243,13 @@ func (s3a *S3ApiServer) listMultipartUploads(input *s3.ListMultipartUploadsInput
 		Prefix:       input.Prefix,
 	}
 
-	entries, isLast, err := s3a.list(s3a.genUploadsFolder(*input.Bucket), "", *input.UploadIdMarker, false, uint32(*input.MaxUploads))
+	entries, _, err := s3a.list(s3a.genUploadsFolder(*input.Bucket), "", *input.UploadIdMarker, false, math.MaxInt32)
 	if err != nil {
 		glog.Errorf("listMultipartUploads %s error: %v", *input.Bucket, err)
 		return
 	}
-	output.IsTruncated = aws.Bool(!isLast)
 
+	uploadsCount := int64(0)
 	for _, entry := range entries {
 		if entry.Extended != nil {
 			key := string(entry.Extended["key"])
@@ -262,9 +263,12 @@ func (s3a *S3ApiServer) listMultipartUploads(input *s3.ListMultipartUploadsInput
 				Key:      objectKey(aws.String(key)),
 				UploadId: aws.String(entry.Name),
 			})
-			if !isLast {
-				output.NextUploadIdMarker = aws.String(entry.Name)
-			}
+			uploadsCount += 1
+		}
+		if uploadsCount >= *input.MaxUploads {
+			output.IsTruncated = aws.Bool(true)
+			output.NextUploadIdMarker = aws.String(entry.Name)
+			break
 		}
 	}