اپلود با اجاکس در yii2


حدوده یه روزه مشغول درست کردن این قسمتم ... :)

خب بریم سراغ یکی از عالی ترین (و البته پر دردسرترین:) ) پکیج yii2

نصب :این خط کد رو توی کامپوزر بزنین

$ php composer.phar require kartik-v/bootstrap-fileinput "dev-master"

یا

اضافه کردن این خط به فایل کامپوزر

"kartik-v/bootstrap-fileinput": "dev-master"

وبعد اپدیت کردن کامپوزر با دستور composer update

نکته : امیدوارم بلد باشین با کامپوزر کار کنین :|

یک نمونه از این اپلودر ...

echo $form->field($memorysImage, 'image',['options'=>['id'=>'up','class'=>'file']])->widget(FileInput::classname(), [

    'language' => 'fa',
    'options' => ['multiple' => true, 'accept' => 'image/*',],
    'pluginOptions' => [
        'showPreview' => true,
       // 'showCaption' => true,
        'showRemove' => true,
         'showUpload' => true,
        'uploadUrl' => Url::to(['memorys/ajax']),
        'uploadExtraData' => [
            'filename'=>'no name',
        ],
        'maxFileCount' => 100,
//        'initialPreview'=>[
//        ],

    ]
]);

تقریبا راحته و این اپلودر واسه عکس تنظیم شده و حالت چند عکسی و تعداد عکس ها رو میشه تنظیم کرد و کلی امکانات دیگه

امیدوارم یادتون نرفته باشه این خط کد رو اضافه کنید

 use kartik\file\FileInput;
 use yii\helpers\Url;

و یک نکته ی کوچیک ... اینکه اگه توی activeForm  دارین از این اپلودر استفاده می کنین یا یه فرم دیگه بهتره یادتون نره که فرم رو واسه ارسال فایل  تنظیم کنید ...

    'enctype'=>'multipart/form-data',

خب بریم سراغ کدهای کنترلر ...

 public function actionAjax()
    {
        if(empty($_FILES))
        {
            echo json_encode(['error'=>'file not uploaded!']);
            return;
        }
        else {
            

            $file = $_FILES['MemorysImage'];
          
            
            foreach ($file['tmp_name'] as $name => $key) {
                 $target = 'user_file'. $file['name'][$name];
                if (move_uploaded_file($file['tmp_name'][$name], $target))
                {
                    

                }
                else
                {
                    echo json_decode(['error' => 'no uploaded']);
                }
            }
        }

    }

خب فک کنم توضح خاصی نخاد ...

لینک های منبع:

http://demos.krajee.com/widget-details/fileinput

https://github.com/kartik-v/yii2-widget-fileinput/

 

۱۳۴۸/۱۰/۱۱ || in category : فریم ورک yii