使用YII2框架怎么实现上传单个文件-创新互联

使用YII2框架怎么实现上传单个文件?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

我们提供的服务有:成都做网站、成都网站建设、微信公众号开发、网站优化、网站认证、绥江ssl等。为超过千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的绥江网站制作公司

数据表tb_user内容如下:


CREATE TABLE `tb_user` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户ID',
 `name` varchar(32) DEFAULT '' COMMENT '用户名',
 `pwd` varchar(64) DEFAULT '' COMMENT '密码',
 `head_img` varchar(256) DEFAULT '' COMMENT '图像',
 `sex` tinyint(1) DEFAULT '0' COMMENT '性别(0:男,1:女)',
 `age` tinyint(3) DEFAULT '0' COMMENT '年龄',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';

表单页面代码如下(至于为什么没有用ActiveForm来创建,这个就不解释了):





  
  表单提交


" method="post" enctype="multipart/form-data">
  姓名:
  密码:
  性别:男      
  年龄:
  头像:
     request->csrfToken; ?>">

模型类代码如下:

 '请填写用户名'],
      ['pwd', 'string', 'length' => [6, 12], 'message' => '密码6-12位'],
      ['sex', 'in', 'range' => [0, 1], 'message' => '正确选择性别'],
      ['age', 'integer', 'min' => 1, 'max' => 120, 'message' => '正确填写年龄'],
      ['head_img', 'image', 'extensions' => ['png', 'jpg', 'gif'], 'maxSize' => 1024 * 1024 * 1024, 'message' => '请上传头像'],
    ];
  }

  //上传头像
  public function uploadHeadImg()
  {
    //'head_img'这个字符串必须跟你表单中file控件的name字段相同
    $head_img = UploadedFile::getInstanceByName('head_img');
    if (!empty($head_img)) {
      $filePath = self::UPLOAD_PAHT . date('Ymd') . '/';
      //判断文件上传路径,如果不存在,则创建
      if (!file_exists($filePath)) {
        @mkdir($filePath, 0777, true);
        @chmod($filePath, 0777);
      }
      //文件名,我们通过md5文件名加上扩展名
      $fileName = md5($head_img->baseName) . '.' . $head_img->extension;
      $file = $filePath . $fileName;
      //保存文件到我们的服务器上
      $head_img->saveAs($file);
      //返回服务器上的文件地址
      return $file;
    } else {
      return false;
    }
  }
}

控制器代码如下:

request->isPost) {
      $user = new \app\models\MyUser();

      //把POST过来的数据加载到user对象
      $data = YII::$app->request->post();
      //注意第二个参数设为'',默认YII的ActiveForm创建的表单元素会加上下标
      $user->load($data, '');

      if ($user->validate()) {
        $user->pwd = YII::$app->security->generatePasswordHash($user->pwd);
        $user->head_img = $user->uploadHeadImg();

        //这里保存时设为false不验证,因为pwd加密了
        $user->save(false);
      } else {
        var_dump($user->errors);
      }
    } else {
      return $this->renderPartial('index');
    }
  }
}

这样我们就可以通过表单上传图像了。

使用YII2框架怎么实现上传单个文件

使用YII2框架怎么实现上传单个文件

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联网站建设公司,的支持。


文章名称:使用YII2框架怎么实现上传单个文件-创新互联
网页链接:http://azwzsj.com/article/didpes.html