2amigos / yii2-file-upload-widget
此包已被放弃,不再维护。未建议替代包。
针对 Yii 框架的 Blueimp 文件上传小部件
1.0.9
2018-09-06 19:15 UTC
Requires
- 2amigos/yii2-gallery-widget: ^1.0
- bower-asset/blueimp-file-upload: ^9.9
- yiisoft/yii2: ^2.0.0
- yiisoft/yii2-bootstrap: ^2.0.0
Requires (Dev)
- phpunit/phpunit: ~4.0
README
渲染一个 BlueImp jQuery 文件上传插件。该插件集成了多文件选择、拖放支持、进度条、验证和图像预览。
安装
通过 composer 安装此扩展是首选方式。
运行
$ composer require 2amigos/yii2-file-upload-widget:~1.0
或添加
"2amigos/yii2-file-upload-widget": "~1.0"
到您的 composer.json
文件的 require
部分。
使用
该小部件提供两种版本
<?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
贡献
请参阅 CONTRIBUTING 获取详细信息。
致谢
许可
BSD 许可证 (BSD)。请参阅 许可文件 以获取更多信息。
网络开发从未如此有趣
www.2amigos.us