zotyo/u-filer

管理文件上传

v1.1.0 2017-10-18 06:36 UTC

This package is not auto-updated.

Last update: 2024-09-15 04:58:29 UTC


README

该软件包为您提供了更方便的方式来管理 Laravel 中的文件上传。

无需每次都重新发明轮子,您的上传文件将变得简单且一致。

  • 上传具有唯一名称的文件,无并发问题。
  • 在 FileDescriptors 中存储上传文件的客户端信息。
  • 文件对象,便于在您的应用程序中管理文件。
  • 为您的 Eloquent 模型提供辅助特质,以便轻松创建访问器和突变器。
  • 友好的 替代品

默认情况下,该软件包配置为上传图像,但您也可以用于任何 MIME 类型。

安装

composer require "zotyo/u-filer"

下载软件包后,将 PackageServiceProvider 添加到您 config/app.php 的 providers 数组中

Zotyo\uFiler\PackageServiceProvider::class

最后,您应该发布软件包的配置和一些示例。

php artisan vendor:publish --provider="Zotyo\uFiler\PackageServiceProvider"

使用方法

该软件包包含几个组件,以减少实现适当文件上传的麻烦。

文件输入

您可以将 file-input.vue 组件发布到您的 /resources/assets/js/components 文件夹。修改组件以适应您的设计。

<div class="form-group">
    <label for="avatar">Avatar</label>
    <file-input id="avatar" v-model="user.avatar"></file-input>
</div>

Vue 组件将文件上传到特定的端点。

注意:如果您愿意,可以完全不使用 VueJS

端点(路由+控制器)

该软件包提供了一个用于上传文件的 HTTP 端点。您可以在配置文件中禁用该端点。如果您想定义自定义端点,您仍然可以重用 UploadControllerTrait

Method    | URI               | Name          | Action
POST      | upload            | upload        | Zotyo\uFiler\Http\UploadController@upload

Eloquent

HasFile 特质提供了方法,您可以使用它们轻松地在模型中创建访问器和突变器。以下示例中,用户的头像是一个文件。

<?php

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Zotyo\uFiler\HasFile;

class User extends Authenticatable
{

    use HasFile;
    protected $fillable = ['avatar'];
    protected $appends  = ['avatar'];

    public function getAvatarAttribute()
    {
        return $this->getFile('avatar');
    }

    public function setAvatarAttribute($value)
    {
        $this->setFile('avatar', $value);
    }
}

验证

提交实体时,不要忘记验证文件。该软件包提供了 verify-file-by-token 验证规则,以防止文件被劫持。

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class UserFormRequest extends FormRequest
{
    public function rules()
    {
        return [
            'avatar' => 'required|verify-file-by-token'
        ];
    }
}