ローカルストレージドライバのためのLALAVEL一時URL


最近、一時URLを使う必要がありました.LaravelはS 3ドライバーで箱から一時的なURLをサポートします.私はローカルディスクを使用していましたが、Laravelはローカルディスク用の一時的なURL機能をサポートしていません.この例外を取得している場合は、右の記事です.RuntimeException with message 'This driver does not support creating temporary URLs.'私のローカルディスクに一時URLロジックを追加することにしました.我々は、Laravel signed URLsを通してこれを成し遂げます.
以下の手順では、LALAVELアプリでgetTemporaryUrl関数を実装する方法について説明します.

Step 1 : AppServiceProviderブートメソッドで次のコードを追加します。


Storage::disk('local')->buildTemporaryUrlsUsing(function ($path, $expiration, $options) {
            return URL::temporarySignedRoute(
                'local.temp',
                $expiration,
                array_merge($options, ['path' => $path])
            );
        });
URL::temporarySignedRouteは、ルート名local.tempを受け取ります.

ステップ2:Webでルートを追加します。PHP


Route::get('local/temp/{path}', function (string $path){
    return Storage::disk('local')->download($path);
})->name('local.temp');
これは一時URLを使用してファイルのダウンロードを許可します.
今すぐ簡単にローカルディスクの一時的なURLを生成することができます.
disk = Storage::disk('releases-local');

return $disk->temporaryUrl($this->path, now()->addMinutes(5));

PS


改善を提案したり、より良い方法を知っていればあなたのフィードバックを歓迎します.