1. 基本設定
config/filesystems.php
新增一個disk
'temp' => [
'driver' => 'local',
'root' => storage_path('temp'),
'url' => env('APP_URL') . '/temp',
'visibility' => 'public',
],
//在文件最下方加入 Symbolic Links
'links' => [
public_path('temp') => storage_path('temp'),
],
storage_path() = root_path/storage/
上面的例子就是建了個disk目徑為/storage/temp
前各瀏覽的模式是 APP_URL/temp
如果是要對外公開的還需要執行
php artisan storage:link
會在 /public
中建立一個捷徑(Symbolic Links)
2. 操作
2.1上傳
$path = $request->file('avatar')->store('avatars');
2.2. storeAs 自行設定檔案保存名稱
- 第一個值是保存的目錄
- 第二個值是保存的檔案名稱
- 其實還有第3個值,是
disk
參考第一部分, 這個值可不增,那麼就應該是storage預設位置
$path = $request->file('avator')->storeAs('/','31313.png','disk');
甚至可以動態決定名稱,比如:
$path = $request->file('avatar')->storeAs(
'avatars', $request->user()->id
);
2.3 刪除單個文件
Storage::delete('file.jpg');
2.4 批量刪除文件
Storage::delete(['file.jpg', 'file2.jpg']);
2.6 建立子目錄
Storage::makeDirectory($directory);
實際用法
Storage::disk('disk_name')->makeDirectory($request->id);
2.6 刪除指定目錄
Storage::deleteDirectory($directory);
實際用法
Storage::disk('disk_name')->deleteDirectory($request->id);
3. 建議及提醒
3.1 操作時建議用這個模式:
Storage::disk('disk_name')->xxx();
好處1. 這樣可直接經Laravel獲取到disk的實際路徑,不用浪費時間輸入path
好處2. 不會搞錯層級,誤刪其他storage中的文件
記得use Storage
use Storage;
在需要操作Storage的php文件中,最開頭記得引入一下