Метод temporaryUrl
Метод temporaryUrl применяется к экземпляру диска Storage
и возвращает временный URL-адрес для доступа к файлу.
Первым параметром передаётся путь к файлу, вторым - экземпляр
класса DateTimeInterface с датой истечения срока действия,
третьим - массив параметров запроса. Метод доступен только для
облачных дисков (S3, R2 и т.д.).
Синтаксис
<?php
Storage::disk('s3')->temporaryUrl($path, $expiration, $options);
?>
Пример
Создадим временную ссылку на файл, которая будет действовать 5 минут:
<?php
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Carbon;
$url = Storage::disk('s3')->temporaryUrl(
'images/photo.jpg',
Carbon::now()->addMinutes(5)
);
echo $url;
?>
Результат выполнения кода:
"https://bucket.s3.region.amazonaws.com/images/photo.jpg?X-Amz-Expires=300&X-Amz-Signature=..."
Пример
Установим максимальное время действия ссылки для S3 (7 дней):
<?php
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Carbon;
$url = Storage::disk('s3')->temporaryUrl(
'documents/report.pdf',
Carbon::now()->addDays(7)
);
echo $url;
?>
Результат выполнения кода:
"https://bucket.s3.region.amazonaws.com/documents/report.pdf?X-Amz-Expires=604800&X-Amz-Signature=..."
Пример
Создадим временную ссылку с дополнительными параметрами запроса:
<?php
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Carbon;
$url = Storage::disk('s3')->temporaryUrl(
'videos/tutorial.mp4',
Carbon::now()->addHour(),
['response-content-type' => 'video/mp4']
);
echo $url;
?>
Результат выполнения кода:
"https://bucket.s3.region.amazonaws.com/videos/tutorial.mp4?X-Amz-Expires=3600&response-content-type=video%2Fmp4&X-Amz-Signature=..."