• 技术文章 >php框架 >YII

    yii2怎么用uploadify

    (*-*)浩(*-*)浩2019-11-05 10:04:01原创927
    Uploadify是来自国外的一款优秀jQuery插件,主要功能是批量上传文件

    下载Uploadify控件可以到git网站上找,找到自己适合用的.例如我们下面用个就是从

    https://github.com/xjflyttp/yii2-uploadify-widget 下载的,里面也有详细的操作文档。 (推荐学习:yii教程

    ① 配置composer.json (就存在网站根目录下),找到require,然后添加我们的uploadify

    "require": {
    "php": ">=5.4.0",
    "yiisoft/yii2": ">=2.0.6",
    "yiisoft/yii2-bootstrap": "*",
    "yiisoft/yii2-swiftmailer": "*",
    "xj/yii2-uploadify-widget": "~2.0.0" //这里是新添加的
    },

    ② 利用composer 将yii2-uploadify-widget 下载到我们网站, 打开在网站根目录运行命令行 ,等待下载如图:

    yii-5.png

    ③ 视图的处理

    <?php
    use yii\web\JsExpression;
    //外部TAG
    echo Html::fileInput('test', NULL, ['id' => 'test']);
    echo Uploadify::widget([
        'url' => yii\helpers\Url::to(['s-upload']),
        'id' => 'test', //需要跟上fileInput 的id 对应
        'csrf' => true,
        'renderTag' => false,
         'jsOptions' => [
                      'width' => 100,
                      'height' => 40,
                      'onUploadError' => new JsExpression(<<<EOF
                      function(file, errorCode, errorMsg, errorString) {
                            console.log('The file ' + file.name + ' could not be uploaded: ' + errorString + errorCode + errorMsg);
                        }
    EOF
                        ),
                        'onUploadSuccess' => new JsExpression(<<<EOF
                        function(file, data, response) {
                            data = JSON.parse(data);
                            if (data.error) {
                                console.log(data.msg);
                                 } else {
                                    //在此处理你的图片
                                   console.log(data.fileUrl);
                            }
                        }
    EOF

    ④ 配置Controller 层

    <?php
    namespace \backend\controllers;
    use xj\uploadify\UploadAction;
    class TestController extends \yii\web\Controller
    {
       public function actions() {
        return [
            's-upload' => [
                'class' => UploadAction::className(),
                //磁盘目录
                'basePath' => '@webroot/upload',
                //访问目录
                'baseUrl' => '@web/upload',
                //防止跨站攻击
                'enableCsrf' => true, // default
                'postFieldName' => 'Filedata', // default
                //BEGIN METHOD
                'format' => [$this, 'methodName'],
                //END METHOD
                //BEGIN CLOSURE BY-HASH
                //是否覆盖相同文件
                'overwriteIfExist' => true,
                //创建图片名称
                'format' => function (UploadAction $action) {
                    $fileext = $action->uploadfile->getExtension();
                    $filename = sha1_file($action->uploadfile->tempName);
                    return "{$filename}.{$fileext}";
                },
                 //想要多调用这个函数
                'format' => function (UploadAction $action) {
                    $fileext = $action->uploadfile->getExtension();
                    $filehash = sha1(uniqid() . time());
                    $p1 = substr($filehash, 0, 2);
                    $p2 = substr($filehash, 2, 2);
                    return "{$p1}/{$p2}/{$filehash}.{$fileext}";
                },
                */
                'validateOptions' => [
                    'extensions' => ['jpg', 'png'], //后缀验证
                    'maxSize' => 1 * 1024 * 1024, //上传大小限制
                 ],
                 //验证前处理
                'beforeValidate' => function (UploadAction $action) {
                    //throw new Exception('test error');
                    },
                 //验证后处理
                'afterValidate' => function (UploadAction $action) {},
                 //保存前处理
                'beforeSave' => function (UploadAction $action) {},
                //保存后处理
                'afterSave' => function (UploadAction $action) {
                    //$action->output 返回给浏览器的数据
                    //返回Url 图片返回的路径
                    //$action->getWebUrl()
                    //图片的名称
                    //$action->getFilename();
                    //保存图片的物理位置
                    //$action->getSavePath();
                    //输出                                 
                    //$action->output['fileUrl'] = $action->getWebUrl();
                    //$action->output['fileName'] = $action->getFilename();
                    //$action->output['filePath'] = $action->getSavePath();
                    //$action->getFilename(); // "image/yyyymmddtimerand.jpg"
                    //$action->getWebUrl(); //  "baseUrl + filename, /upload/image/yyyymmddtimerand.jpg"
                     //$action->getSavePath(); // "/var/www/htdocs/upload/image/yyyymmddtimerand.jpg"
                    $action->output[‘fileUrl’] = $action->getWebUrl()
                  },
               ],
            ];
         }
       }
    ?>

    以上就是yii2怎么用uploadify的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:yii2
    上一篇:yii2怎么开发模块 下一篇:yii2支持php7吗
    大前端线上培训班

    相关文章推荐

    • thinkphp和yii2的优缺点是什么?• 使用 Yii2.0 创建微服务• composer怎么安装yii2• yii2的优势在哪儿

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网