file / repo
文件管理的一个Laravel包
1.1.9
2024-05-19 08:29 UTC
README
注意
目前它与laravel 11的最新版本不兼容,目前正在开发中
概述
FileManager插件是一个定制的Laravel解决方案,旨在简化文件管理。它处理文件上传、更新、删除和检索,同时在数据库表中维护引用。此插件利用Laravel内置的文件系统和数据库功能,提供一个强大且易于使用的文件管理系统。
特性
- 上传文件:将文件存储在数据库中并记录其引用。
- 更新文件:将文件存储在数据库中并记录其引用。
- 删除文件:将文件存储在数据库中并记录其引用。
- 检索文件路径:将文件存储在数据库中并记录其引用。
安装
步骤 1:安装命令
您可以通过以下命令安装此插件
composer require file/repo
步骤 2:注册服务提供者
如果您使用的是低于11版本的Laravel,请将服务提供者添加到 config/app.php
'providers' => [ // Other Service Providers file\repo\RepoServiceProvider::class, ],
如果您使用的是11或更新的版本,您应该将服务提供者添加到 bootstrap/providers.php
<?php return [ // Other Service Providers file\repo\RepoServiceProvider::class, ];
步骤 3:运行迁移
当应用程序启动时,服务提供者将自动生成file_repos表的迁移。使用以下命令运行迁移
php artisan migrate
使用
上传文件
要上传文件,请使用upload方法。这将在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中概述的步骤和示例,您可以轻松地将此插件集成到项目中并增强其文件管理功能。