目的Laravel文件系統/存儲 - 本地/公共文件的URL不工作
嗨,我使用laravel爲一個RESTful API。 我想將用戶的URL返回給圖像文件。 我目前正在使用本地存儲,但我已經配置了一個Amazon S3實例,並同步了我的圖像。 我的目標是通過簡單地改變第一行中我的配置/ filesystems.php本地存儲和S3之間無縫切換:
'default' => 'public',
詳細
我已經配置laravel來訪問本地磁盤和S3通過config/filesystems.php文件。 根據laravel說明,我已將公共/存儲軟鏈接到存儲/應用程序/公共。 這裏是我的配置/ filesystems.php磁盤陣列:
'disks' => [
// 'local' => [
// 'driver' => 'local',
// 'root' => storage_path('app'),
// ],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'visibility' => 'public',
],
's3' => [
'driver' => 's3',
'key' => '...',
'secret' => '...',
'region' => '...',
'bucket' => 'mybucket',
],
],
這是我的文件夾層次:
在本地磁盤上:
- myLaravelApp /存儲/移動/背景/
- myLaravelApp/storage/mobile/closetimages/
- myLaravelApp/storage/mobile/profileimages/
在S3
- mybucket /移動/背景/
- mybucket /移動/ closetimages/
- mybucket /移動/ profileimages/
正如我剛纔所說,我會喜歡在本地存儲和s3之間進行無縫切換,只需更改config/filesystems.php中的第一行:
'default' => 'public',
,我希望用下面的函數調用數據返回給用戶:
return Storage::url('mobile/profileimages/12345.jpg');
當我撥打這個電話與S3作爲默認情況下,反應是這樣的:
https://s3.amazonaws.com/mybucket/mobile/profileimages/12345.jpg
這是輝煌的!但是,當我使用默認本地存儲進行此調用時,響應爲:
/storage/mobile/profileimages/12345。JPG
這是不是一個完整的網址:(我想做些什麼回報是一樣的東西:
http://mywebapp/storage/mobile/profileimages/12345.jpg
但我想相同的呼叫到兩個S3和本地存儲工作這樣我就可以無縫切換。
我使用它錯誤地?這是令人沮喪,因爲這顯然是一個圖書館/框架調用,所以我希望它工作,或者至少返回一個完整的URL。
謝謝
這看起來輝煌。你有什麼建議將這個功能放在我的laravel項目中,以便使它可以廣泛訪問,因爲它看起來或多或少是全局功能。謝謝 – mils
我很高興它幫助。我只是把它放在app/helpers.php文件中。如果你確定使用這種方法,不要忘記通過在你的'composer.json'的''autoload''部分添加''files':[「app/helpers.php」]來自動加載它。 – peterm