Как установить Content-Type на S3 publi c загруженный файл с помощью boto3 presigned_post? - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь установить Content-Type: application / pdf для заранее подписанного сообщения. В настоящее время он загружает файл, но при нажатии на URL-адрес он загружает файл напрямую. Я знаю, что, изменив тип контента, я смогу получить предварительный просмотр в браузере, но мне нужно сделать это программно при создании специально подписанного сообщения. Это код:

presigned_post = s3.generate_presigned_post(
  Bucket = S3_BUCKET,
  Key = uuid,
  Fields = {"acl": "public-read", "Content-Type": 'application/pdf'},
  Conditions = [
    {"acl": "public-read"},
    {"Content-Type": 'application/pdf'}
  ],
  ExpiresIn = 3600
)

Однако, когда я обращаюсь к отдельному объекту на консоли S3, в свойствах -> метаданные он показывает доступ запрещен.

Я смог изменить это вручную выполнив эти команды

aws s3api put-object-acl --bucket mybucket --key key.pdf  --acl public-read   --no-sign-request
aws s3 cp s3://bucket/key.pdf  s3://bucket/key.pdf --acl public-read  --metadata-directive REPLACE

(как в этом посте AWS docs ), но я хотел бы сделать это на presigned_post. Есть идеи?

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