>  기사  >  PHP 프레임워크  >  yii2에서 업로드를 사용하는 방법

yii2에서 업로드를 사용하는 방법

(*-*)浩
(*-*)浩원래의
2019-11-05 10:04:013615검색

Uploadify는 뛰어난 해외 jQuery 플러그인입니다. 주요 기능은 파일을 일괄 업로드하는 것입니다.

yii2에서 업로드를 사용하는 방법

Uploadify 컨트롤을 다운로드하려면 git 웹사이트로 이동하여 자신에게 맞는 것을 찾으세요. 아래에서 사용하는 것은

https에서 가져온 것입니다. //github.com/xjflyttp/yii2-uploadify-widget에서 다운로드되었으며 자세한 작업 문서도 있습니다. (권장 학습: yii 튜토리얼)

① 작곡가.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" //这里是新添加的
},

② 작곡가를 사용하여 yii2-uploadify-widget을 우리의 웹 사이트, 웹 사이트의 루트 디렉터리에서 실행되는 명령줄을 열고 그림과 같이 다운로드를 기다립니다.

yii2에서 업로드를 사용하는 방법

③ 뷰 처리

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

④ 컨트롤러 레이어 구성

<?php
namespace \backend\controllers;
use xj\uploadify\UploadAction;
class TestController extends \yii\web\Controller
{
   public function actions() {
    return [
        &#39;s-upload&#39; => [
            &#39;class&#39; => UploadAction::className(),
            //磁盘目录
            &#39;basePath&#39; => &#39;@webroot/upload&#39;,
            //访问目录
            &#39;baseUrl&#39; => &#39;@web/upload&#39;,
            //防止跨站攻击
            &#39;enableCsrf&#39; => true, // default
            &#39;postFieldName&#39; => &#39;Filedata&#39;, // default
            //BEGIN METHOD
            &#39;format&#39; => [$this, &#39;methodName&#39;],
            //END METHOD
            //BEGIN CLOSURE BY-HASH
            //是否覆盖相同文件
            &#39;overwriteIfExist&#39; => true,
            //创建图片名称
            &#39;format&#39; => function (UploadAction $action) {
                $fileext = $action->uploadfile->getExtension();
                $filename = sha1_file($action->uploadfile->tempName);
                return "{$filename}.{$fileext}";
            },
             //想要多调用这个函数
            &#39;format&#39; => 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}";
            },
            */
            &#39;validateOptions&#39; => [
                &#39;extensions&#39; => [&#39;jpg&#39;, &#39;png&#39;], //后缀验证
                &#39;maxSize&#39; => 1 * 1024 * 1024, //上传大小限制
             ],
             //验证前处理
            &#39;beforeValidate&#39; => function (UploadAction $action) {
                //throw new Exception(&#39;test error&#39;);
                },
             //验证后处理
            &#39;afterValidate&#39; => function (UploadAction $action) {},
             //保存前处理
            &#39;beforeSave&#39; => function (UploadAction $action) {},
            //保存后处理
            &#39;afterSave&#39; => function (UploadAction $action) {
                //$action->output 返回给浏览器的数据
                //返回Url 图片返回的路径
                //$action->getWebUrl()
                //图片的名称
                //$action->getFilename();
                //保存图片的物理位置
                //$action->getSavePath();
                //输出                                 
                //$action->output[&#39;fileUrl&#39;] = $action->getWebUrl();
                //$action->output[&#39;fileName&#39;] = $action->getFilename();
                //$action->output[&#39;filePath&#39;] = $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에서 업로드를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.