jenky/laravel-plupload

为 Laravel 5 定制的 Plupload 包

3.0.1 2019-08-05 04:18 UTC

README

Latest Stable Version Total Downloads License

Laravel 包用于 Plupload http://plupload.com.

此包使用了https://github.com/jildertmiedema/laravel-plupload的一些部分

安装

使用 composer 安装此包

composer require jenky/laravel-plupload

Laravel 5.5+ 使用包自动发现,因此不需要您手动添加 ServiceProvider。

对于 Laravel 5.4 或更早版本

将 ServiceProvider 添加到 config/app.php 中的 providers 数组

Jenky\LaravelPlupload\PluploadServiceProvider::class,

并将以下内容添加到您的 facades 中 config/app.php

'Plupload' => Jenky\LaravelPlupload\Facades\Plupload::class,

使用发布命令将包配置复制到本地配置

php artisan vendor:publish

php artisan vendor:publish --provider="Jenky\LaravelPlupload\PluploadServiceProvider"

用法

上传文件

1. 使用默认的 plupload HTML

使用 plupload 网站上找到的 示例。从 入门 页面开始是个不错的选择。

2. Plupload 构建器

make($id, $url)

创建新的上传器。

  • $id: 上传器的唯一标识。
  • $url: 上传的 URL 终端。
{!! Plupload::make('my_uploader_id', route('photos.store'))->render() !!}

或使用辅助函数

{!! plupload()->make('my_uploader_id', route('photos.store')) !!}
// or even shorter
{!! plupload('my_uploader_id', route('photos.store')) !!}

render($view = 'plupload::uploader', array $data = [])

渲染上传器。您可以通过传递视图名称及其数据来自定义此功能。从版本 2.0 开始,如果您不想设置视图或额外数据,可以在构建器中省略 render 方法。

3. 使用包的 JS 文件初始化 Plupload(可选)

如果您不想编写自己的 JS 来初始化 Plupload,可以使用包含在包中的 upload.js 文件(位于 resources/views/vendor/plupload/assets/js)。请确保您的页面上已经加载了 jQuery

初始化 Plupload

<script>
$(function () {
    createUploader('my_uploader_id'); // The Id that you used to create with the builder
});
</script>

以下方法与 upload.js 文件一起使用。

设置上传器选项

setOptions(array $options)

设置上传器选项。请访问 https://github.com/moxiecode/plupload/wiki/Options 查看所有选项。您可以在 config/plupload.php 中设置默认的全局选项。

{!! plupload('my_uploader_id', route('photos.store'))
    ->setOptions([
        'filters' => [
            'max_file_size' => '2mb',
            'mime_types' => [
                ['title' => 'Image files', 'extensions' => 'jpg,gif,png'],
            ],
        ],
    ]) !!}

在添加文件时自动开始上传

在调用 render() 函数之前,在构建器中使用 setAutoStart()

setAutoStart($bool)

  • $bool: truefalse
{!! plupload('my_uploader_id', route('photos.store'))->setAutoStart(true) !!}

接收文件

file($name, $handler)

  • $name: 输入名称。
  • $handler: 回调处理程序。

在您的路由或控制器中使用此功能。请随意修改以满足您的需求。

return Plupload::file('file', function($file) {
    // Store the uploaded file using storage disk
    $path = Storage::disk('local')->putFile('photos', $file);

    // Save the record to the db
    $photo = App\Photo::create([
        'name' => $file->getClientOriginalName(),
        'type' => 'image',
        // ...
    ]);

    // This will be included in JSON response result
    return [
        'success' => true,
        'message' => 'Upload successful.',
        'id' => $photo->id,
        // 'url' => $photo->getImageUrl($filename, 'medium'),
        // 'deleteUrl' => route('photos.destroy', $photo)
        // ...
    ];
});

辅助函数也可用

return plupload()->file('file', function($file) {

});

如果您正在使用包 upload.js 文件。JSON 负载中的 urldeleteUrl 将用于生成预览和删除链接,而 id 将作为隐藏字段附加到上传器中,格式如下

<input type="hidden" name="{uploaderId}_files[]" value="{id}" />.

请注意,deleteUrl 使用 DELETE 方法。