Skip to content

S3: support for ContentEncoding & ContentDisposition on multipart upload #1175

Description

@RomainMou

As an OVHcloud customer using S3 storage
I want S3 Storage to be able to use ContentEncoding & ContentDisposition on multipart upload
so that I can upload big file in a more efficient way

First, here some commands to see that the difference with a simple upload and a multipart upload:

aws --profile gra s3 cp ~/Téléchargements/petit.ifc.gz s3://test/cli-simple/petit.ifc --content-type "application/octet-stream" --content-encoding "gzip"  --content-disposition 'attachment; filename="petit.ifc"'
aws --profile gra s3api head-object --bucket test --key cli-simple/petit.ifc
{
    "AcceptRanges": "bytes",
    "LastModified": "2026-06-12T10:12:54+00:00",
    "ContentLength": 5668736,
    "ETag": "\"3cf2654522ee479492206d18ef02ec18\"",
    "VersionId": "1781259173.503677",
    "ContentDisposition": "attachment; filename=\"petit.ifc\"",
    "ContentEncoding": "gzip",
    "ContentType": "application/octet-stream",
    "Metadata": {}
}
aws --profile gra s3 cp ~/Téléchargements/linuxmint-22.2-cinnamon-64bit.iso.gz s3://test/cli-multi/linuxmint-22.2-cinnamon-64bit.iso --content-type "application/octet-stream" --content-encoding "gzip"  --content-disposition 'attachment; filename="linuxmint-22.2-cinnamon-64bit.iso"'
aws --profile gra s3api head-object --bucket test --key cli-multi/linuxmint-22.2-cinnamon-64bit.iso
{
    "AcceptRanges": "bytes",
    "LastModified": "2026-06-12T10:07:24+00:00",
    "ContentLength": 3035197692,
    "ETag": "\"e854b61f45b0f7d351e4921402b25780-362\"",
    "VersionId": "1781258786.844567",
    "ContentType": "application/octet-stream",
    "Metadata": {}
}

I can also reproduce the same behaviour with the last version of boto3 python lib (for example with this script: https://gist.github.com/RomainMou/f810de2e3ff28cf18e72de4d7ca3fbb0).

This is needed because a lot of time, doing a simple upload means loading the whole file in memory at once, this is very not efficient for very large file. And ContentDisposition & ContentEncoding are needed in a lot of scenarios.

Metadata

Metadata

Type

Fields

No fields configured for Bug.

Projects

Status
Acknowledged

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions