file_package Laravel sftp 檔案上傳
起因:Laravel 已經有強大的Storage處理檔案上傳/下載等作業,且支援ftp傳送。但因專案需求,客戶只開放使用sftp,故寫了此package擴充了sftp功能, (*1)
安裝方式
-
切換報專案目錄下,執行 composer require burgess1109/file_package:*, (*2)
-
至 config/app.php 'providers'內加入 FilePackages\FilePackagesServiceProvider::class,, (*3)
環境參數(.env)
FILE_CONNECT:連線方式(sftp or ftp or local), (*4)
使用ftp or sftp 需加入以下參數, (*5)
FILE_HOST:file server IP, (*6)
FILE_PORT : file server port, (*7)
FILE_USERNAME:file server 帳號, (*8)
FILE_PASSWORD:file server 密碼, (*9)
FILE_ROOT:上傳目錄, (*10)
filesystems(config/filesystems.php )
1.修正default參數,讓其撈取環境參數, (*11)
'default' => env('FILE_SERVER', 'local'),, (*12)
2.'disks'內增加ftp disk, 讓Storage支援FTP, (*13)
'ftp' => [, (*14)
'driver' => 'ftp',
'host' => env('FILE_HOST', 'localhost'),
'username' => env('FILE_USERNAME', '預設帳號'),
'password' => env('FILE_PASSWORD', '預設密碼'),
// Optional FTP Settings...
'port' => 21,
'root' => env('FILE_ROOT', '上傳目錄'),
],
測試頁面
提供測試頁面 YourIP/file, (*15)
使用方式
可參考 packages/FilePackages/src/FileController.php, (*16)
-
取得檔案列表, (*17)
$directory='路徑';, (*18)
$FilePackages = new FilePackages($directory);, (*19)
$files = $FilePackages->getList();, (*20)
-
取得檔案, (*21)
$directory='路徑';, (*22)
$FilePackages = new FilePackages($directory);, (*23)
$FilePackages->return_type='download';//回傳類別, 直接下載:download 圖片:jpg 影片:video, (*24)
$FilePackages->file_name=實際檔名;, (*25)
$FilePackages->show_name=檔案顯示名稱;, (*26)
return $FilePackages->getFile();, (*27)
-
上傳檔案, (*28)
$directory='路徑';, (*29)
$FilePackages = new FilePackages($directory);, (*30)
$FilePackages->request_file=檔案上傳request;, (*31)
$result=$FilePackages->postFile();, (*32)
-
刪除檔案, (*33)
$directory='路徑';, (*34)
$FilePackages = new FilePackages($directory);, (*35)
$FilePackages->file_name='刪除的實際檔名';, (*36)
$result=$FilePackages->deleteFile();, (*37)
-
刪除資料夾, (*38)
$directory='路徑';, (*39)
$FilePackages = new FilePackages($directory);, (*40)
$FilePackages->floder='資料夾名稱';, (*41)
$result = $FilePackages->deleteFloder();, (*42)