overplex / yii2-file-upload-widget
Blueimp 文件上传小部件,适用于 Yii 框架
1.1.1
2021-02-15 11:49 UTC
Requires
- 2amigos/yii2-gallery-widget: ^1.0
- bower-asset/blueimp-canvas-to-blob: ~3.28.0
- bower-asset/blueimp-file-upload: ~10.31.0
- bower-asset/blueimp-load-image: ~5.14.0
- bower-asset/blueimp-tmpl: ~3.19.0
- yiisoft/yii2: ^2.0.0
- yiisoft/yii2-bootstrap4: ^2.0.8
Requires (Dev)
- phpunit/phpunit: ~4.0
- roave/security-advisories: dev-master
README
渲染一个 BlueImp jQuery 文件上传插件。该插件集成了多文件选择、拖拽支持、进度条、验证和图片预览功能。
安装
通过 composer 安装此扩展是首选方式。
运行
$ composer require overplex/yii2-file-upload-widget:1.1.0
或者将以下内容添加到您的 composer.json
文件的 require
部分:
"overplex/yii2-file-upload-widget": "1.1.0"
使用
该小部件提供了两种版本
<?php use dosamigos\fileupload\FileUpload; // without UI ?> <?= FileUpload::widget([ 'model' => $model, 'attribute' => 'image', 'url' => ['media/upload', 'id' => $model->id], // your url, this is just for demo purposes, 'options' => ['accept' => 'image/*'], 'clientOptions' => [ 'maxFileSize' => 2000000 ], // Also, you can specify jQuery-File-Upload events // see: https://github.com/blueimp/jQuery-File-Upload/wiki/Options#processing-callback-options 'clientEvents' => [ 'fileuploaddone' => 'function(e, data) { console.log(e); console.log(data); }', 'fileuploadfail' => 'function(e, data) { console.log(e); console.log(data); }', ], ]); ?> <?php use dosamigos\fileupload\FileUploadUI; // with UI ?> <?= FileUploadUI::widget([ 'model' => $model, 'attribute' => 'image', 'url' => ['media/upload', 'id' => $tour_id], 'gallery' => false, 'fieldOptions' => [ 'accept' => 'image/*' ], 'clientOptions' => [ 'maxFileSize' => 2000000 ], // ... 'clientEvents' => [ 'fileuploaddone' => 'function(e, data) { console.log(e); console.log(data); }', 'fileuploadfail' => 'function(e, data) { console.log(e); console.log(data); }', ], ]); ?> <?php // action examples public function actionImageUpload() { $model = new WhateverYourModel(); $imageFile = UploadedFile::getInstance($model, 'image'); $directory = Yii::getAlias('@frontend/web/img/temp') . DIRECTORY_SEPARATOR . Yii::$app->session->id . DIRECTORY_SEPARATOR; if (!is_dir($directory)) { FileHelper::createDirectory($directory); } if ($imageFile) { $uid = uniqid(time(), true); $fileName = $uid . '.' . $imageFile->extension; $filePath = $directory . $fileName; if ($imageFile->saveAs($filePath)) { $path = '/img/temp/' . Yii::$app->session->id . DIRECTORY_SEPARATOR . $fileName; return Json::encode([ 'files' => [ [ 'name' => $fileName, 'size' => $imageFile->size, 'url' => $path, 'thumbnailUrl' => $path, 'deleteUrl' => 'image-delete?name=' . $fileName, 'deleteType' => 'POST', ], ], ]); } } return ''; } public function actionImageDelete($name) { $directory = Yii::getAlias('@frontend/web/img/temp') . DIRECTORY_SEPARATOR . Yii::$app->session->id; if (is_file($directory . DIRECTORY_SEPARATOR . $name)) { unlink($directory . DIRECTORY_SEPARATOR . $name); } $files = FileHelper::findFiles($directory); $output = []; foreach ($files as $file) { $fileName = basename($file); $path = '/img/temp/' . Yii::$app->session->id . DIRECTORY_SEPARATOR . $fileName; $output['files'][] = [ 'name' => $fileName, 'size' => filesize($file), 'url' => $path, 'thumbnailUrl' => $path, 'deleteUrl' => 'image-delete?name=' . $fileName, 'deleteType' => 'POST', ]; } return Json::encode($output); }
请参阅 jQuery 文件上传文档 获取有关配置选项的更多信息。
使用动作
待办事项
测试
$ ./vendor/bin/phpunit
贡献
请参阅 贡献指南 获取详细信息。
鸣谢
许可协议
BSD 许可协议 (BSD)。有关更多信息,请参阅 许可文件。
网页开发从未如此有趣
www.2amigos.us