Хотя кажется, что безопасность браузера предотвращает загрузку одним щелчком любым другим способом, кроме заголовка контента, если у вас есть доступ к S3, есть способ запросить файл с обновленным заголовком, используя параметр signed url
.
В моем случае для Rails
все, что требуется, - это драгоценный камень S3 и пользователь IAM, у которого есть разрешения Get и Put для вашего сегмента.
Ваша политика IAM будет выглядеть примерно так:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::YOUR_BUCKET/*"
}
]
}
Тогда просто
s3 = Aws::S3::Resource.new(
credentials: Aws::Credentials.new(KEY, SECRET),
region: REGION_CODE)
obj = s3.bucket(BUCKET).object(AWS_KEY)
obj.presigned_url(:get, response_content_disposition: 'attachment')
Это вернет URL, который уже правильный заголовок, и он будет автоматически загружен в браузере.
Ваш синтаксис будет различаться в зависимости от языка, но использование URL-адреса со знаком S3 должно быть несколько схожим в любом языковом API.