在 Laravel 中實現文件上傳相對簡單,因為它已經內置了對文件上傳的支持。下面是一些基本步驟來實現文件上傳:
首先,你需要創建一個 HTML 表單,允許用戶選擇要上傳的文件。表單應該使用 POST
方法,并包含 enctype="multipart/form-data"
屬性,以便正確傳輸文件數據。
<form action="/upload" method="POST" enctype="multipart/form-data">
@csrf
<input type="file" name="file">
<button type="submit">上傳文件</button>
</form>
在 routes/web.php
文件中,添加一個路由來處理文件上傳請求。
Route::post('/upload', 'FileUploadController@store');
使用以下命令創建一個名為 FileUploadController
的控制器:
php artisan make:controller FileUploadController
在 FileUploadController
中,添加一個名為 store
的方法來處理文件上傳。
use Illuminate\Http\Request;
public function store(Request $request)
{
// 驗證文件是否存在
$request->validate([
'file' => 'required|file',
]);
// 獲取文件實例
$file = $request->file('file');
// 獲取文件擴展名
$extension = $file->getClientOriginalExtension();
// 生成唯一的文件名
$filename = time() . '.' . $extension;
// 將文件移動到指定目錄
$destinationPath = public_path('/uploads');
$file->move($destinationPath, $filename);
// 返回成功消息
return back()->with('success', '文件上傳成功!');
}
在項目的根目錄下,創建一個名為 uploads
的目錄,并設置適當的權限,以便 Web 服務器可以寫入文件。
mkdir uploads
chmod -R 755 uploads
現在,當用戶通過表單上傳文件時,文件將被保存到 uploads
目錄,并生成一個唯一的文件名。你可以根據需要自定義文件名和存儲位置。