diff --git a/Module/PSMinIO/bin/PSMinIO.dll b/Module/PSMinIO/bin/PSMinIO.dll index 9cd171d..657382b 100644 Binary files a/Module/PSMinIO/bin/PSMinIO.dll and b/Module/PSMinIO/bin/PSMinIO.dll differ diff --git a/Module/PSMinIO/bin/PSMinIO.pdb b/Module/PSMinIO/bin/PSMinIO.pdb index 5f6748b..66efc85 100644 Binary files a/Module/PSMinIO/bin/PSMinIO.pdb and b/Module/PSMinIO/bin/PSMinIO.pdb differ diff --git a/src/Core/S3/MultipartUploadManager.cs b/src/Core/S3/MultipartUploadManager.cs index 8b86465..7d5c57d 100644 --- a/src/Core/S3/MultipartUploadManager.cs +++ b/src/Core/S3/MultipartUploadManager.cs @@ -197,15 +197,20 @@ namespace PSMinIO.Core.S3 } } - var response = _httpClient.ExecuteRequestForString(HttpMethod.Post, $"/{bucketName}/{objectName}", + var response = _httpClient.ExecuteRequestForString(HttpMethod.Post, $"/{bucketName}/{objectName}", queryParams, headers); var doc = XDocument.Parse(response); - var uploadId = doc.Descendants("UploadId").FirstOrDefault()?.Value; - + + // Handle XML namespace properly + var ns = doc.Root?.GetDefaultNamespace(); + var uploadId = ns != null + ? doc.Descendants(ns + "UploadId").FirstOrDefault()?.Value + : doc.Descendants("UploadId").FirstOrDefault()?.Value; + if (string.IsNullOrEmpty(uploadId)) { - throw new InvalidOperationException("Failed to initiate multipart upload - no upload ID returned"); + throw new InvalidOperationException($"Failed to initiate multipart upload - no upload ID returned. Response: {response}"); } return uploadId!; @@ -280,7 +285,12 @@ namespace PSMinIO.Core.S3 queryParams, content: content); var doc = XDocument.Parse(response); - var etag = doc.Descendants("ETag").FirstOrDefault()?.Value?.Trim('"') ?? ""; + + // Handle XML namespace properly + var ns = doc.Root?.GetDefaultNamespace(); + var etag = ns != null + ? doc.Descendants(ns + "ETag").FirstOrDefault()?.Value?.Trim('"') ?? "" + : doc.Descendants("ETag").FirstOrDefault()?.Value?.Trim('"') ?? ""; return new CompleteMultipartUploadResult {