fix(server): disable automatic checksums in S3 presigned URLs for large file uploads

Co-authored-by: danielalves96 <62755605+danielalves96@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2025-10-22 12:36:52 +00:00
parent 84622adb45
commit c8b7654bcf

View File

@@ -80,7 +80,21 @@ export class S3StorageProvider implements StorageProvider {
Key: objectName,
});
return await getSignedUrl(s3Client, command, { expiresIn: expires });
// Disable automatic checksum calculation for large file uploads
// This prevents the SDK from adding x-amz-checksum-* headers that may cause
// 400 Bad Request errors with S3-compatible providers like Wasabi for files > 10GB
// The unhoistableHeaders option prevents specific headers from being included in the presigned URL
return await getSignedUrl(s3Client, command, {
expiresIn: expires,
unhoistableHeaders: new Set([
"x-amz-checksum-crc32",
"x-amz-checksum-crc32c",
"x-amz-checksum-sha1",
"x-amz-checksum-sha256",
"x-amz-checksum-crc64nvme",
"x-amz-sdk-checksum-algorithm",
]),
});
}
async getPresignedGetUrl(objectName: string, expires: number, fileName?: string): Promise<string> {