umer2 / repo
文件管理的Laravel包
1.1.9
2024-05-19 08:29 UTC
README
注意
目前它与laravel 11的最新版本不兼容,目前正在开发中
概述
FileManager插件是一个定制的Laravel解决方案,旨在简化文件管理。它处理文件上传、更新、删除和检索,同时在数据库表中维护引用。此插件利用Laravel内置的文件系统和数据库功能,提供了一个强大且易于使用的文件管理系统。
功能
- 上传文件:将文件存储到数据库并记录其引用。
- 更新文件:将文件存储到数据库并记录其引用。
- 删除文件:将文件存储到数据库并记录其引用。
- 检索文件路径:将文件存储到数据库并记录其引用。
安装
步骤1:安装命令
您可以通过以下命令安装此插件
composer require file/repo
步骤2:注册服务提供者
如果您使用的是低于laravel 11的版本,请将服务提供者添加到config/app.php
'providers' => [ // Other Service Providers file\repo\RepoServiceProvider::class, ],
如果您使用的是laravel 11或更新版本,您应将服务提供者添加到bootstrap/providers.php
<?php return [ // Other Service Providers file\repo\RepoServiceProvider::class, ];
步骤3:运行迁移
当应用程序启动时,服务提供者将自动为file_repos表生成迁移。使用以下命令运行迁移
php artisan migrate
用法
上传文件
要上传文件,请使用上传方法。这将存储文件并在file_repos
表中创建记录。
use file\repo\FileManager; FileManager::upload('users', $userId, $request->file('profile_picture'));
更新文件
要更新现有文件,请使用update
方法。这将用新文件替换旧文件并更新数据库中的记录。
FileManager::update('users', $id, $request->file('new_profile_picture'));
删除文件
要删除文件及其数据库记录,请使用deletefile
方法。
FileManager::deletefile($fileId);
检索文件路径
要检索与特定引用表和ID关联的所有文件路径,请使用get_path_by
方法。
$paths = FileManager::get_path_by('users', $userId);
示例:产品图片管理
步骤1:文件上传
处理产品上传时的文件上传。
use Illuminate\Http\Request; use file\repo\FileManager; use App\Models\Product; class ProductController extends Controller { public function create(Request $request) { $request->validate([ 'name' => 'Required', 'price' => 'Required', ]); $product = new Product(); $product->name = $request->name; $product->price = $request->price; $product->save(); if ($request->file) { FileManager::upload("product", $product->id, $request->file); } return back()->with('success', 'Product uploaded successfully.'); } }
步骤2:文件更新
允许管理员更新他们的产品图片,替换旧的图片。
public function update(Request $request, $id) { $request->validate([ 'name' => 'Required', 'price' => 'Required', ]); $product = Product::find($id); $product->name = $request->name; $product->price = $request->price; $product->update(); if ($request->file) { FileManager::update('product', $id, $request->file); } return back()->with('success', 'Product updated successfully.'); }
步骤3:检索文件路径
显示所有产品的图片。
public function getById($id) { $product = Product::find($id); $image = FileManager::get_path_by("product", $id); return view('view', compact('product','image')); }
@foreach ($image as $item) <img src="{{ $item['path'] }}" alt="product image"> @endforeach
步骤4:文件删除
提供删除用户个人头像的功能。
public function delete($id) { $product = Product::find($id); if ($product) { $images = FileManager::get_path_by("product", $id); foreach ($images as $image) { FileManager::deletefile($image->id); } $product->delete(); } return back(); }
结论
FileManager插件为Laravel应用程序中的文件上传提供了结构化和高效的方式。通过遵循本README中概述的步骤和示例,您可以轻松地将此插件集成到项目中并增强其文件管理功能。