sweelix / yii2-plupload
PHP 5.4+ Sweelix Yii2 plupload 扩展 - 简单的异步文件上传
1.0.3
2014-05-23 13:35 UTC
Requires
This package is not auto-updated.
Last update: 2024-09-14 15:06:07 UTC
README
Sweelix Plupload 扩展为 Yii 2 创建,以简化 Plupload 集成。
Plupload 与 Sweelix 无关联
请注意,Plupload (http://www.plupload.com/) 使用多许可证。请确保选择适用于
安装
如果您使用 Packagist 安装软件包,则可以更新您的 composer.json 如下
{ "require": { "sweelix/yii2-plupload": "*" } }
如何使用此扩展
安装软件包后
激活图像管理,通过将其添加到 Yii 组件中
// Yii2 app configuration components => [ // ... exiting components 'image' => [ 'class' => 'sweelix\yii2\image\Config', 'quality' => 80, 'cachingMode' => sweelix\image\Image::MODE_NORMAL, 'urlSeparator' => '/', 'cachePath' => '@webroot/cache', 'cacheUrl' => '@web/cache', 'errorImage' => 'error.jpg', ] // ... exiting components ]
将扩展添加到您的 Html
辅助类中
namespace app\components; use yii\helpers\Html as BaseHtml; use sweelix\yii2\plupload\traits\Plupload; class Html extends BaseHtml { // adding this trait allow easy access to plupload use Plupload; }
基本用法
示例一 : 带基本 UI 和自动上传的单个文件上传
控制器文件
namespace app\controllers; use sweelix\yii2\plupload\components\UploadedFile; use yii\web\Controller; use Yii; /** * This is a basic controller */ class SiteController extends Controller { public function actions() { // add upload / preview and delete file management return [ 'async-upload' => 'sweelix\yii2\plupload\actions\UploadFile', 'async-delete' => 'sweelix\yii2\plupload\actions\DeleteFile', 'async-preview' => 'sweelix\yii2\plupload\actions\PreviewFile', ]; } public function actionIndex() { if(isset($_POST['demoUpload']) === true) { $uploads = UploadedFile::getInstancesByName('demoUpload'); // retrieve all uploaded files for name demoUpload foreach($uploads as $uploadedFile) { $uploadedFile->saveAs('@webroot/resources/'.$uploadedFile->name); } // ... perform correct redirection } $this->render('index'); } }
索引视图文件
// ... echo Html::asyncInput('demoUpload', isset($_POST['demoUpload'])?$_POST['demoUpload']:null, ['config' => [ 'ui' => true, 'auto' => true, ]]); ?> //...
示例二 : 带基本 UI 和自动上传的多文件上传
控制器文件(控制器中未做任何更改)
namespace app\controllers; use sweelix\yii2\plupload\components\UploadedFile; use yii\web\Controller; use Yii; /** * This is a basic controller */ class SiteController extends Controller { public function actions() { // add upload / preview and delete file management return [ 'async-upload' => 'sweelix\yii2\plupload\actions\UploadFile', 'async-delete' => 'sweelix\yii2\plupload\actions\DeleteFile', 'async-preview' => 'sweelix\yii2\plupload\actions\PreviewFile', ]; } public function actionIndex() { if(isset($_POST['demoUpload']) === true) { $uploads = UploadedFile::getInstancesByName('demoUpload'); // retrieve all uploaded files for name demoUpload foreach($uploads as $uploadedFile) { $uploadedFile->saveAs('@webroot/resources/'.$uploadedFile->name); } // ... perform correct redirection } $this->render('index'); } }
索引视图文件,这里方括号指示 plupload 使用多文件上传
// ... echo Html::asyncInput('demoUpload[]', isset($_POST['demoUpload'])?$_POST['demoUpload']:null, ['config' => [ 'ui' => true, 'auto' => true, ]]); ?> //...
配置参数 此参数允许开发人员配置 plupload
以下是默认配置
使用手动文件管理模型的使用
模型文件
namespace app\models; use yii\db\ActiveRecord; use Yii; /** * Basic active record with uploadId (pkey autoincrement) and uploadFile (text) */ class Upload extends ActiveRecord { public static function tableName() { return '{{uploads}}'; } public function rules() { return [ // this rule is used to configure plupload : // * maxFiles trigger multifile upload, // * extensions trigger the plupload filters // * maxSize trigger the maxFileSize ['uploadFile', 'file', 'extensions' => ['jpg', 'png', 'm4a'], 'maxFiles' => 1, 'maxSize' => 450*1024], ]; } public function attributeLabels() { return [ 'uploadId' => Yii::t('sweelix', 'Upload ID'), 'uploadFile' => Yii::t('sweelix', 'Uploaded File'), ]; } }
控制器文件
namespace app\controllers; use app\models\Upload; use sweelix\yii2\plupload\components\UploadedFile; use yii\web\Controller; use Yii; /** * This is a basic controller */ class SiteController extends Controller { public function actions() { // add upload / preview and delete file management return [ 'async-upload' => 'sweelix\yii2\plupload\actions\UploadFile', 'async-delete' => 'sweelix\yii2\plupload\actions\DeleteFile', 'async-preview' => 'sweelix\yii2\plupload\actions\PreviewFile', ]; } public function actionIndex() { $fileUpload = new Upload(); if($fileUpload->load($_POST) === true) { // ... perform pre save $uploads = UploadedFile::getInstances($fileUpload, 'uploadFile'); // retrieve all uploaded files for name demoUpload foreach($uploads as $uploadedFile) { // ... save file ... $uploadedFile->saveAs('@webroot/resources/'.$uploadedFile->name); } // ... perform post file save $fileUpload->save(); // ... perform correct redirection } $this->render('index', ['fileUpload' => $fileUpload]); } }
索引视图文件
// ... <?php echo Html::activeAsyncInput($fileUpload, 'uploadFile', ['config' => [ 'ui' => true, 'auto' => true, ]]); ?> //...
使用自动文件管理模型的使用
模型文件
namespace app\models; use sweelix\yii2\plupload\behaviors\AutomaticUpload; use yii\db\ActiveRecord; use Yii; /** * Basic active record with uploadId (pkey autoincrement) and uploadFile (text) */ class Upload extends ActiveRecord { public static function tableName() { return '{{uploads}}'; } public function behaviors() { return [ [ 'class' => AutomaticUpload::className(), 'attributes' => [ 'uploadFile' => [ // define where to save the file 'basePath' => '@webroot/resources', // define the url to access the file 'baseUrl' => '@web/resources', ], ] ] ]; } public function rules() { return [ // this rule is used to configure plupload : // * maxFiles trigger multifile upload, // * extensions trigger the plupload filters // * maxSize trigger the maxFileSize ['uploadFile', 'file', 'extensions' => ['jpg', 'png', 'm4a'], 'maxFiles' => 1, 'maxSize' => 450*1024], ]; } public function attributeLabels() { return [ 'uploadId' => Yii::t('sweelix', 'Upload ID'), 'uploadFile' => Yii::t('sweelix', 'Uploaded File'), ]; } }
控制器文件
namespace app\controllers; use app\models\Upload; use sweelix\yii2\plupload\components\UploadedFile; use yii\web\Controller; use Yii; /** * This is a basic controller */ class SiteController extends Controller { public function actions() { // add upload / preview and delete file management return [ 'async-upload' => 'sweelix\yii2\plupload\actions\UploadFile', 'async-delete' => 'sweelix\yii2\plupload\actions\DeleteFile', 'async-preview' => 'sweelix\yii2\plupload\actions\PreviewFile', ]; } public function actionIndex() { $fileUpload = new Upload(); if($fileUpload->load($_POST) === true) { // ... file save is performed automagically $fileUpload->save(); // ... perform correct redirection } $this->render('index', ['fileUpload' => $fileUpload]); } }
索引视图文件
// ... <?php echo Html::activeAsyncInput($fileUpload, 'uploadFile', ['config' => [ 'ui' => true, 'auto' => true, ]]); ?> //...
贡献
所有代码贡献 - 包括具有提交访问权限的人的贡献 - 必须通过拉取请求,并由核心开发者批准后才能合并。这是为了确保对所有代码进行适当的审查。
对该项目进行分支,创建一个 功能分支 ,然后向我们发送拉取请求。