• Yii2.0 多文件上传


    ---------------------------------------------------------------------------------------------------

    首先你得调整模型类,在 file 验证规则里增加一个 maxFiles 选项,用以限制一次上传文件的最大数量。 

    upload()方法也得修改, 以便一个一个地保存上传的文件。

    ---------------------------------------------------------------------------------------------------

    <?php
    namespace appmodels;

    use yiiaseModel;
    use yiiwebUploadedFile;

    class UploadForm1 extends Model{
        /**
         * @var UploadedFile[]
         */
        public $imageFiles;

        public function rules()
        {
            return [
                [['imageFiles'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg', 'maxFiles' => 4],
            ];
        }    
        public function upload()
        {
            foreach ($this->imageFiles as $file) {
                $file->saveAs('./upload/' . $file->baseName . '.' . $file->extension);
            }
            return true;
        }
    }

    --------------------------------------------------------------------------------------------------------------

    在视图文件里,你需要把 multiple 选项添加到fileInput()函数调用里, 这样文件输入控件就可以接收多个文件。

    ---------------------------------------------------------------------------------------------------------------

    <?php
    use yiiwidgetsActiveForm;
    use yiihelpersUrl;
    ?>

    <?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?>

    <table class="table table-bordered table-hover definewidth m10">
    <tr>
       <td class="tableleft">上传多个图片</td>
       <td><?= $form->field($model, 'imageFiles[]')->fileInput(['multiple' => true, 'accept' => 'image/*']) ?>

       </td>
    </tr>

    <tr>
       <td class="tableleft"></td>
       <td>
           <button type="submit" class="btn btn-primary" type="button">保存</button>
       </td>
    </tr>

    <?php ActiveForm::end() ?>

    -------------------------------------------------------------------------------------------------------------

    最后,在控制器的 action 方法中,你应该调用 UploadedFile::getInstances() 而不是 UploadedFile::getInstance() 来把UploadedFile 实例数组赋值给 UploadForm::imageFiles

    ------------------------------------------------------------------------------------------------------------

    <?php
    namespace backendcontrollers;

    use Yii;
    use yiiwebController;
    use appmodelsUploadForm1;
    use yiiwebUploadedFile;

    class PhotoController extends Controller
    {

        public $enableCsrfValidation = false;
        public function actionIndex()
        {
            $request = Yii::$app->request;
            $model = new UploadForm1();
            if($request->isPost)
            {
                $file=$model->imageFiles = UploadedFile::getInstances($model, 'imageFiles');
                //print_r($file);die;
                foreach ($file as $key => $v) {
                    $image[]=$v->name;                
                }
                //print_r($image);die;  
                $images=implode(',',$image);
                if($model->upload())
                {
                    $connection = Yii::$app->db;
                    $connection->createCommand()->insert('upload', [
                        'image' => $images,
                    ])->execute();
                }          
            }
            else
            {
                return $this->render('upload1',['model' => $model]);
            }
        }
    }

  • 相关阅读:
    在DevExpress程序中使用SplashScreenManager控件实现启动闪屏和等待信息窗口
    使用Setup Factory安装包制作工具制作安装包
    PostgreSQL介绍以及如何开发框架中使用PostgreSQL数据库
    在DevExpress中使用CameraControl控件进行摄像头图像采集
    读取数据库信息构建视图字段的备注信息,方便程序代码生成
    混合框架中Oracle数据库的还原处理操作
    使用图片视频展示插件blueimp Gallery改造网站的视频图片展示
    .NET缓存框架CacheManager在混合式开发框架中的应用(1)-CacheManager的介绍和使用
    在Winform界面菜单中实现动态增加【最近使用的文件】菜单项
    文字处理控件TX Text Control的使用
  • 原文地址:https://www.cnblogs.com/bluealine/p/5334081.html
Copyright © 2020-2023  润新知