Подтвердить что ты не робот

AWS S3 файл отображения inline вместо силы скачать

По какой-то причине файлы в моем ведре S3 принудительно загружаются, а не отображаются в строке, поэтому, если я скопирую ссылку на изображение и вставляю ее в адресную строку, а затем перейду к ней, это будет способствовать загрузке моего браузера. Вместо этого я действительно должен щелкнуть открытое изображение, чтобы перейти к URL.

Любые способы изменить способ подачи файлов с S3

4b9b3361

Ответ 2

$client->putObject(array(
        'Bucket'     => 'buckname',
        'Key'        => $destination,
        'SourceFile' => $source,
        'ContentType' =>'image/jpeg', //<-- this is what you need!
        'ACL'          => 'public-read'//<-- this makes it public so people can see it
    ));

Ответ 3

Вы также должны указать расположение содержимого вместо встроенного вместо вложения.

$client->putObject(array(
    'Bucket'     => 'buckname',
    'Key'        => $destination,
    'SourceFile' => $source,
    'ContentType' =>'image/jpeg', //<-- this is what you need!
    'ContentDisposition' => 'inline; filename=filename.jpg', //<-- and this !
    'ACL'          => 'public-read'//<-- this makes it public so people can see it
));

Ответ 4

Если вы используете Python, вы можете установить ContentType следующим образом

s3 = boto3.client('s3')

mimetype = 'image/jpeg' # you can programmatically get mimetype using the 'mimetypes' module
s3.upload_file(
    Filename=local_path,
    Bucket=bucket,
    Key=remote_path,
    ExtraArgs={
        "ContentType": mimetype
    }
)

Вы также можете добиться того же в AWS Cli. Примечание *.jpeg Проверьте документацию s3

aws s3 cp \
      --exclude "*" \
      --include "*.jpeg" \
      --content-type="image/jpeg"  \
      --metadata-directive="REPLACE" \
      --recursive \
      --dryrun \
       s3://<bucket>/<path>/ \
       s3://<bucket>/<path>/

Кроме того, если вы хотите изменить один объект за раз, вы можете использовать s3api copy-object

aws s3api copy-object \
    --content-type="image/jpeg" \
    --metadata-directive="REPLACE" \
    --copy-source "<bucket>/<key>" \
    --bucket "<bucket>" \
    --key "<key>" \
    --acl public-read

Ответ 5

Вы можете попробовать это, ContentType обязательно для открытия в браузере, если вы уже открыли любой URL в браузере, а затем попробуйте в режиме инкогнито.

var params = {
            Bucket: config.BUCKET_NAME,
            Key: fileName,
            ContentEncoding: 'base64',
            ContentDisposition: 'inline',
            ContentType: 'image/jpeg',
            Body: buf
        };