file/repo

文件管理的一个Laravel包

1.1.9 2024-05-19 08:29 UTC

This package is auto-updated.

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