在 Laravel 中,实现文件上传和管理可以通过以下几个步骤来完成:
在你的 Laravel 项目中,创建一个 HTML 表单,用于接收用户上传的文件。确保表单的 enctype 属性设置为 multipart/form-data,以便正确传输文件。
<form action="{{ route('file.upload') }}" method="POST" enctype="multipart/form-data">
@csrf
<input type="file" name="file" />
<button type="submit">上传文件</button>
</form>
在 routes/web.php 文件中,创建一个路由来处理文件上传请求。
Route::post('/file/upload', 'FileController@upload')->name('file.upload');
使用以下命令创建一个名为 FileController 的控制器:
php artisan make:controller FileController
在 FileController 中,添加一个名为 upload 的方法来处理文件上传。
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
public function upload(Request $request)
{
$request->validate([
'file' => 'required|file',
]);
$filePath = $request->file('file')->store('uploads');
return back()->with('success', '文件上传成功!');
}
这里,我们使用 store 方法将文件存储在 storage/app/uploads 目录中。你可以根据需要自定义存储位置。
在 resources/views 目录下,创建一个名为 file_list.blade.php 的视图文件,用于显示已上传的文件列表。
@foreach ($files as $file)
<p>{{ $file }}</p>
@endforeach
在 FileController 中,添加一个名为 listFiles 的方法来获取已上传的文件列表。
public function listFiles()
{
$files = Storage::disk('local')->files('uploads');
return view('file_list', compact('files'));
}
在 routes/web.php 文件中,创建一个路由来显示文件列表。
Route::get('/files', 'FileController@listFiles')->name('file.list');
将文件上传表单的提交地址更改为文件列表页面的 URL。
<form action="{{ route('file.list') }}" method="POST" enctype="multipart/form-data">
@csrf
<input type="file" name="file" />
<button type="submit">上传文件</button>
</form>
现在,你应该可以在 Laravel 项目中实现文件上传和管理功能了。用户可以通过表单上传文件,然后查看已上传的文件列表。