python - Boto3 Put Forcing Скачать для PNG - PullRequest
0 голосов
/ 01 апреля 2020

Я загружаю png изображений в корзину c S3. Тем не менее, когда я получаю доступ к изображениям в своем браузере, вместо того, чтобы отображать inline, они автоматически загружаются.

Используя этот ответ , я написал следующий код.

with open(new_img_path, "rb") as f:
    s3.put_object(Bucket=bucket, Key=s3_img_path, Body=f, ContentType="image/png")

Когда я просматриваю загруженный файл, он все равно заставляет меня его скачать.

Я могу решить эту проблему, выполнив команду CLI, найденную в этого ответа .

aws s3 cp \                                              
                s3://bucket/ \
                s3://bucket/ \
                --exclude '*' \
                --include '*.png' \
                --no-guess-mime-type \
                --content-type="image/png" \
                --metadata-directive="REPLACE" \
                --recursive

После запуска этих команд все работает просто отлично. Проблема в том, что я не хочу использовать CLI для исправления того, что делается программно.

Для справки, здесь скриншоты метаданных:

1 Ответ

0 голосов
/ 01 апреля 2020

Я нашел проблему. Аргумент ACL не был установлен на public-read.

Вот рабочий код, отформатированный для удобства чтения:

with open(new_img_path, "rb") as f:
    s3.put_object(
        Bucket=bucket,
        Key=s3_img_path,
        Body=f,
        ContentType="image/png",
        ACL="public-read"
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...