Включите загрузку файла S3 одним щелчком без заголовка расположения контента или доступа к метаданным - PullRequest
0 голосов
/ 18 января 2020

Я хочу, чтобы пользователи могли загружать файлы с S3 одним щелчком мыши, прямо с моего сайта, не переходя по целевому URL, а затем щелкая правой кнопкой мыши, чтобы окончательно загрузить оригинал.

Из того, что я Поймите, чтобы сделать это в HTML Мне нужно записать метаданные заголовка content disposition в файл, прежде чем он будет сохранен на S3, но у меня нет доступа к S3 во время генерации файла.

Есть есть ли способ заставить браузер загрузить файл в один клик в любом случае, не отправляя пользователей по ссылке s3, чтобы загрузить его вручную?

1 Ответ

0 голосов
/ 20 января 2020

Хотя кажется, что безопасность браузера предотвращает загрузку одним щелчком любым другим способом, кроме заголовка контента, если у вас есть доступ к 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...