激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - YII2框架實現表單中上傳單個文件的方法示例

YII2框架實現表單中上傳單個文件的方法示例

2020-06-10 13:47懷素真 PHP教程

這篇文章主要介紹了YII2框架實現表單中上傳單個文件的方法,結合實例形式分析了YII2框架表單提交與文件上傳相關操作技巧,需要的朋友可以參考下

本文實例講述了YII2框架實現表單中上傳單個文件的方法。分享給大家供大家參考,具體如下:

有些時候我們提交的表單中含有文件。怎么樣讓表單里的數據和文件一起提交。

我的數據表tb_user內容如下:

?
1
2
3
4
5
6
7
8
9
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來創建,這個就不解釋了):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
use yii\helpers\Url;
?>
<!doctype html>
<html lang="zh-CN">
<head>
  <meta charset="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="sex" value="0" checked>男
     <input type="radio" name="sex" 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>

模型類代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
 
namespace app\models;
 
use yii\db\ActiveRecord;
use yii\web\UploadedFile;
 
class MyUser extends ActiveRecord
{
  //注意這里的上傳路徑是相對你入口文件
  const UPLOAD_PAHT = 'uploads/';
 
  //返回你要操作的數據表名
  public static function tableName()
  {
    return '{{%user}}';
  }
 
  //設置規則,驗證表單數據
  public function rules()
  {
    return [
      ['name', 'required', 'message' => '請填寫用戶名'],
      ['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;
    }
  }
}

控制器代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
 
namespace app\controllers;
 
use YII;
use yii\web\Controller;
 
class IndexController extends Controller
{
  public function actionIndex()
  {
    if (YII::$app->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框架實現表單中上傳單個文件的方法示例

希望本文所述對大家基于Yii框架的PHP程序設計有所幫助。

原文鏈接:https://www.cnblogs.com/jkko123/p/8662802.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品国产高清一区二区三区 | 国产一区二区视频观看 | 欧美日韩中文字幕在线视频 | 超碰97人 | 国产九色91 | 国产在线一级片 | 激情夜色 | 午夜天堂在线视频 | 国产成人免费精品 | 99精品视频在线免费观看 | 韩国一级免费视频 | 午夜久久电影 | 久久久成人999亚洲区美女 | 久久久久久艹 | 欧洲伊人网 | 黄色网址你懂的 | 5xsq在线视频 | 91网站免费在线观看 | h色在线观看 | 日本在线播放一区二区三区 | 亚洲乱操 | 久久亚洲综合色 | 精品一区二区在线观看 | 天堂成人国产精品一区 | 午夜在线视频一区二区三区 | 天天操很很操 | 午夜久 | 欧美日本免费一区二区三区 | 中文字幕网站在线 | wwwav国产 | 欧美综合日韩 | 欧美自拍三区 | 国产成人免费高清激情视频 | 天天舔天天插 | 色女人在线 | 亚洲天堂在线电影 | 羞羞视频免费网站含羞草 | 国产亚洲小视频 | 一级大片视频 | 欧美精品成人一区二区在线观看 | 请播放一级毛片 |