umer2/repo

文件管理的Laravel包

1.1.9 2024-05-19 08:29 UTC

This package is auto-updated.

Last update: 2024-09-19 10:13:09 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中概述的步骤和示例,您可以轻松地将此插件集成到项目中并增强其文件管理功能。