Постоянные URL-адреса изображений из S3 без указания пути изображения в сегменте S3

Я новичок в AWS S3 Service и работаю над таким проектом, как Dropbox. Теперь я хочу сохранить все изображения в S3 с помощью PHP, и в настоящее время я использую предварительно назначенный URL-адрес S3 для PUT Image. Теперь я хочу показать изображение пользователям. Я нашел 2 способа сделать это:

  1. Дайте публичный доступ к S3 Bucket (чего я не хочу делать).
  2. Предопределенные URL для объекта GET. (но пользователь может просматривать структуру каталогов)

Я хочу что-то вроде постоянных URL-адресов для просмотра изображения, но без указания пути к изображению, как в S3 Bucket. Например, в настоящее время URL имеет такую ​​структуру:

domain.com///?

но я хочу что-то вроде этого:

domain.com/ некоторый код это как указатель, чтобы получить изображение из каталога S3 Bucket. Пожалуйста, дайте мне подсказку, чтобы сделать это.

заранее спасибо

0

Решение

Вы можете использовать этот скрипт в качестве прокси для извлечения изображения из S3 с помощью php curl.

$bucket = 'bucketname';
$filename = 'somefile.jpg';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://s3-<region>.amazonaws.com/' . $bucket . '/' . $filename);
curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
$data = curl_exec($ch);
curl_close($ch);

header("Content-Length: " . strlen($data));
echo $data;

Объединить с .htaccess RewriteRule например, тогда ваш s3 bucket url скрыт и может просто получить ресурс, такой как этот URL http://example.com/resources/images/somefile.jpg

RewriteRule ^resources/images/([^/]+)$ /proxy.php?filename=$1 [QSA,L]
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]