zotyo/ajax-file-uploader

此包已被废弃,不再维护。未建议替代包。
此包最新版本(v1.1.0)没有可用的许可证信息。

分别上传您的文件,然后只需将上传文件的id附加到您的表单中

v1.1.0 2016-11-22 10:48 UTC

This package is not auto-updated.

Last update: 2017-10-17 10:09:54 UTC


README

此包为您提供了更方便管理文件上传的方法。

它提供了以下功能

  • 上传文件的端点
  • 一个用户友好的Vue组件,用于替代常规
  • 为您的Eloquent模型提供辅助特质,以轻松创建访问器和修改器
  • 用于验证模型/实体文件的验证规则

默认情况下,该包配置为上传图片,但您可以使用任何MIME类型。

安装

将以下行添加到您的composer.json文件中

"zotyo/ajax-file-uploader": "dev-master"

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

Zotyo\AjaxFileUploader\PackageServiceProvider::class

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

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

使用方法

该包附带了一些组件,以减少实现适当的文件上传的工作量。

注意:强烈建议通过JavaScript提交您的实体,而不是使用原生的HTML表单提交。但这不是强制性的。

文件输入

您可以将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>

端点(路由+控制器)

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

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

验证

提交实体时,不要忘记验证文件。该包提供了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'
        ];
    }
}

Eloquent

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

<?php

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Zotyo\AjaxFileUploader\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);
    }
}