首页 > 作文

YII2框架实现表单中上传单个文件的方法示例

更新时间:2023-04-08 19:45:54 阅读: 评论:0

本文实例讲述了yii2框架实现表单中上传单个文件的方法。分享给大家供大家参考,具体如下:

有些时候我们提交的表单中含有文件。怎么样让表单里的数据和文件一起提交。

我的数据表tb_ur内容如下:

create table `tb_ur` ( `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 '图像', `x` tinyint(1) default '0' comment '性别(0:男,1:女)', `age` tinyint(3) default '0' comment '年龄', primary key (`id`)) engine=innodb default chart=utf8mb4 comment='用户表';

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

<?phpu yii\helpers\url;?><!doctype html><ht广东高考报考指南ml lang="zh-cn"><head>  <meta chart="utf-8">  <title>表单提交</title></head><body><form action="<?php echo url::toroute('index/index'); ?>" method="post" enctype="multipart/form-data">  姓名:<input type="text" name="name"><br>  密码:<input type="password" name="pwd"><br>  性别:<input type="radio" name="x" value="0" checked>男     <input type="radio" name="x" value="1">女<br>  年龄:<input type="number" name="age"><br>  头像:<input type="file" name="head_img"><br>  <input type="submit" value="提交">  <input name="_csrf" type="hidden" value="<?php echo \yii::$app->request->csrftoken; ?>"></form></body></html>

模型类代码如下:

<?phpnamespace app\models;u yii\db\activerecord;u yii\w恢复高考eb\uploadedfile;class myur extends activerecord{  //注意这里的上传路径是相对你入口文件  const upload_paht = 'uploads/';  //返回你要操作的数据表名  public static function tablename()  {    return '{{%ur}}';  }  //设置规则,验证表单数据  public function rules()  {    return [      ['name', 'required', 'message' => '请填写用户名'],      ['pwd', 'string', 'length' => [6, 12], 'message' => '密码6-12位'],      ['x', '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 = lf::upload_paht . date('ymd') . '/';      //判断文件上传路很幸福高考成绩查询时间径,如果不存在,则创建      if (!file_exists($filepath)) {        @mkdir($filepath, 0777, true);        @chmod($filepath, 0777);      }      //文件名,我们通过md5文件名加上扩展名      $filename = md5($head_img->baname) . '.' . $head_img->extension;      $file = $filepath . $filename;      //保存文件到我们的服务器上      $head_img->saveas($file);      //返回服务器上的文件地址      return $file;    } el {      return fal;    }  }}

控制器代码如下:

<?phpnamespace app\controllers;u yii;u yii\web\controller;class indexcontroller extends controller{  public function actionindex()  {    if (yii::$app->request->ispost) {      $ur = new \app\models\myur();      //把post过来的数据加载到ur对象      $data = yii::$app->request->post();      //注意第二个参数设为'',默认yii的activeform创建的表单元素会加上下标      $ur->load($data, '');      if ($ur->validate()) {        $ur->pwd = yii::$app->curity->generatepasswordhash($ur->pwd);        $ur->head_img = $ur->uploadheadimg();        //这里保存时设为fal不验证,因为pwd加密了        $ur->save(fal);      } el {        var_dump($ur->errors);      }    } el {      return $this->renderpartial('index');    }  }}

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

本文发布于:2023-04-08 19:45:52,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/5ef7c1fb7f96eadfa2c4c72d1e3f8eac.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:YII2框架实现表单中上传单个文件的方法示例.doc

本文 PDF 下载地址:YII2框架实现表单中上传单个文件的方法示例.pdf

标签:表单   上传   文件   头像
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图