jenky / laravel-plupload
为 Laravel 5 定制的 Plupload 包
Requires
- php: >=5.5.9
- illuminate/contracts: ^5.2
- illuminate/support: ^5.2
README
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:
true
或false
{!! 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 负载中的 url
和 deleteUrl
将用于生成预览和删除链接,而 id
将作为隐藏字段附加到上传器中,格式如下
<input type="hidden" name="{uploaderId}_files[]" value="{id}" />
.
请注意,deleteUrl
使用 DELETE
方法。