溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

yii2用uploadify的方法

發(fā)布時間:2021-01-08 16:02:15 來源:億速云 閱讀:132 作者:小新 欄目:編程語言

這篇文章主要介紹yii2用uploadify的方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

Uploadify是來自國外的一款優(yōu)秀jQuery插件,主要功能是批量上傳文件

下載Uploadify控件可以到git網(wǎng)站上找,找到自己適合用的.例如我們下面用個就是從

https://github.com/xjflyttp/yii2-uploadify-widget 下載的,里面也有詳細的操作文檔。

① 配置composer.json (就存在網(wǎng)站根目錄下),找到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 下載到我們網(wǎng)站, 打開在網(wǎng)站根目錄運行命令行 ,等待下載如圖:

yii2用uploadify的方法

③ 視圖的處理

<?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,
            //創(chuàng)建圖片名稱
            'format' => function (UploadAction $action) {
                $fileext = $action->uploadfile->getExtension();
                $filename = sha1_file($action->uploadfile->tempName);
                return "{$filename}.{$fileext}";
            },
             //想要多調用這個函數(shù)
            '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 返回給瀏覽器的數(shù)據(jù)
                //返回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的方法”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI