ThinkPHP实现附件上传功能_php实例_脚本之家
分类:计算机编程

刚学的采纳ThinkPHP框架轻便上传附属类小零件

    ThinkPHP也是三个MVC框架,分视图、调控器和模型,和Yii框架相比相对较好驾驭,何况是轻量级的框架(相对于Yii来讲),在运用Yii框架时候就算将框架放在项目文件中,用编辑器展开文件都非常的慢,亲身的咀嚼。TP代码也分工鲜明,便于网址的保卫安全定协调治本。未来也可能有非常多集团在用那个框架。

率先需求领悟tp框架中Upload.class.php(ThinkPHP/Library/Think/Upload,class,php)中的多少个函数

     意气风发、TP的目录布局

1:getError(卡塔尔 获取上传错误信息

library----------------第三方能源包

2:uploadOne(卡塔尔(قطر‎ 上传单个公文

    ThinkPHP

3:upload(卡塔尔 上传八个公文

    jquery

4:rootPath 上传文件保留根路径

    kindeditor

商品图片

//处理上传附件图片 //判断是否上传 4:没有上传附件 if ($_FILES['goods_pic']['error']<4) { //上传 $cfg = array( 'rootPath' => './Public/uploads/', //保存根路径 ); $upload = new ThinkUpload; //完全限定名称 实例化对象 //uploadOne的名字和路径等相关信息返回 $file_info=$upload->uploadOne; //把上传好的附件存到数据库 拼接路径 //$upload->rootPath通过父类upload.class.php中的__get()方法获取配置中的rootPath $_POST['goods_big_img']=$upload->rootPath.$file_info['savepath'].$file_info['savename']; }

application------------应用程序

万生机勃勃对上传附属类小构件有另外必要,可参照父类Upload.class.php中上传配置config参数实行精选必要的参数,只需在地点代码$cfg=array(卡塔尔国中重写就能够!

    Common---------------全局公用函数

父类上传配置参数如下:

    Home

private $config = array, //允许上传的文件MiMe类型 'maxSize' => 0, //上传的文件大小限制  'exts' => array(), //允许上传的文件后缀 'autoSub' => true, //自动子目录保存文件 'subName' => array, //子目录创建方式,[0]-函数名,[1]-参数,多个参数使用数组 'rootPath' => './Uploads/', //保存根路径 'savePath' => '', //保存路径 'saveName' => array, //上传文件命名规则,[0]-函数名,[1]-参数,多个参数使用数组 'saveExt' => '', //文件保存后缀,空则使用原后缀 'replace' => false, //存在同名是否覆盖 'hash' => true, //是否生成hash编码 'callback' => false, //检测文件是否存在回调,如果存在返回文件信息数组 'driver' => '', // 文件上传驱动 'driverConfig' => array;

      Common-------------局地公用函数

如上便是本文的全体内容,希望对大家的学习抱有助于,也指望大家多都赐教脚本之家。

      Conf---------------配置文件

        config.php

      Controller---------控制器

      Model--------------模型

      View---------------视图

   Admin

      Common-------------局地公用函数

      Conf---------------配置文件

        config.php

      Controller---------控制器

      Model--------------模型

      View---------------视图

  Runtime--------------运营时(有时文件卡塔尔(英语:State of Qatar)

  public-----------------公用文件

    images

    css

 index.php

 admin.php     (目录大概是如此的)

     二、命名空间:设想的文书夹

1、定义命名空间

   namespace 空间名;

   namespace hello;

   namespace helloaaabbb;

   注意:namespace必须出未来总体页面包车型地铁首先行

2、导入内定空间下的类

   use 空间名类名;

   use helloPerson;//导入hello空间下的Person类

   use helloaaaPerson;//导入helloaaa下的Person类

效果与利益:解决类的重名难题

只顾:命名空间到php5.3的时候,才引入

      三、入口文件

<?php
  header(...);
  //指定绑定的模块名
  define("BIND_MODULE","模块名");
  //指定应用程序目录
  define("APP_PATH","application/");
  //开启调试模式
  define("APP_DEBUG",true);
  //开启或关闭目录安全。开启后是在每个目录中生成一个空白的index.html文件
  define("BUILD_DIR_SECURE",false);
  //包含ThinkPHP入口文件
  include_once 'library/ThinkPHP/ThinkPHP.php';
?>

     注意:

         1、每种调整器必需有投机的命名空间

             namespace 模块名Controller;

         2、种种模型必需有谈得来的命名空间

              namespace 模块名Model;

         3、导入一些命名空间

             1卡塔尔(قطر‎调控器与模型的父类

               namespace Think;

              library/ThinkPHP/Library/Think/Controller.class.php

              namespace Think;

               library/ThinkPHP/Library/Think/Model.class.php

            2卡塔尔国导入内定空间下的类

              use ThinkController;

              use ThinkModel;

   四、命名准则

      .调节器的命名法则

1、必需接受大驼峰的命名法规

2、必须以Controller.class.php来结尾

IndexController.class.php

LoginController.class.php

NewsController.class.php

ReviewsController.class.php

     调节器中艺术的命名

1、必需采纳小驼峰的命名准绳

index()

add()

insert()

login()

 示例:

<?php
  namespace HomeController;
  use ThinkController;

  class XxxController extends Controller
  {
     public function 方法()
     {
    //逻辑代码;
    $this->assign(key,value);
    $this->assign(key,value);
    $this->assign(key,value);
    $this->display();
     }
  }
?>

  

模型的命名法则

1、必得选择大驼峰的命名法规

2、必须以表名来命名

3、必须以Model.class.php来结尾

ReviewsModel.class.php

BbsInfoModel.class.php

示例:

<?php
  namespace HomeModel;//定义命名空间
  use ThinkModel;//导入父类
  class XxxModel extends Model
  {
     public $tableName = "省略了前缀的表名";
     public $trueTableName = "完整的表名";
  }
?>

      五、Think标签

          特点:

1、标签订界符:{}、<>

   注意:唯有输出值的竹签用的是{},别的的都用的是<>

2、所有<>标签,必需都以双标签

   <标签></标签>

   <标签 />

3、assign方法传过来的key名,有的加$,有的不加$

   注意:独有输出值、if标签加$,其余的都不加$

      标签:

1、展现变量值

   {$key}

2、显示数组中的某三个值

   {$key.下标}

   {$key[下标]}

3、if标签

   <if condition="条件">

     内容

   <elseif condition="条件"/>

     内容

   <elseif condition="条件"/>

     内容

   <else/>

     内容

   </if>

4、比较标签

   == eq

   !=           neq

   ===          heq

   !==          nheq

   <            lt

   <= elt

   > gt

   >=       egt

5、switch标签

   <switch name="key">

     <case value="值1">内容</case>

     <case value="值2">内容</case>

     <case value="值3">内容</case>

     <default/>内容

   </switch>

6、for标签

   <for start="初始值" end="结束值" name="循环变量名">

     内容,循环变量:{$i}

   </for>

7、foreach标签

   <foreach name="key" key="k" item="v">

       下标:{$k}    值:{$v}

   </foreach>

8、volist标签

   <volist name="key" key="k" id="v">//k是序号实际不是键名称

      序号:{$k}   值:{$v}

   </volist>

9、原样彰显

   <literal>

     Think标签

   </literal>

10、php标签

   <php>

     php代码;

     php代码;

     php代码;

   </php>

11、包含html文件

   <include file="xxxx"/>

   <include file="文件夹:文件名"/>

   例子:

   View

     Login

       hello.html

   <include file="Login:hello"/>

 六、ThinkPHP配置文件

1、当前模块目录的配备文件

   application/Home/Conf/config.php

   application/Admin/Conf/config.php

2、全局配置文件

   application/Common/Conf/config.php

3、全局配置文件

   library/ThinkPHP/Conf/convention.php

配置文件优先级排列顺序:

模块下的安排文件 > application/Common/Conf/config.php > tp财富包中的构造文件

建议:

1、不要改造convention.php配置文件

2、application/Common/Conf/config.php

   前后、后台处理都没有差别的构造消息,写在那

3、模块下的配备文件

   存放的都是现阶段模块独立的结构音讯

    七、**url访问情势(url路由卡塔尔**

 

1、问号传参

    

   

   

   ----------

   <a href="index.php?c=控制器&a=方法"></a>

   <img src="publicxxx.jpg">

   <link href="public/css/xxx.css">

   <script src="library/jquery/jquery-1.4.js">

2、pathinfo模式

   

   

   

   ----------

   <a href="入口文件地点/调节器/方法/名/值.html"></a>

   <img src="根目录地址/publicxxx.jpg">

   <link  href="根目录地址/public/css/xxx.css">

   <script src="根目录地址/library/jquery/jquery-1.4.js">

3.

               (1)、通过古板的$_GET方法来拿到

                    $变量 = $_GET["参数名"];

               (2)、给艺术加参数

                public function 方法名($参数名,$参数名...)

                {}

               注意:

                1卡塔尔(英语:State of Qatar)方法中的参数名必需与url中的参数名相符

                2卡塔尔方法中的参数的个数、顺序必需与url中的参数相同

                   (参数的名称、个数、顺序必需一切相通卡塔尔国

         八、ThinkPHP系统常量

              1、获得进口文件地方:链接地址、跳转地址

                  __APP__

              2、得到根目录地址:css、image、library

                  __ROOT__

        九、ThinkPHP页面重定向

1、跳转页面

   $this->redirect("控制器/方法");

2、跳转页面,并url传参

   $this->redirect("控制器/方法",array(名=>值,名=>值));

3、跳转页面,并提示音讯

   $this->redirect("控制器/方法",array(),时间,信息);

   $this->redirect("控制器/方法",NULL,时间,信息);

       十、自定义success页面

1、在ViewPublic下新建一个success页面(自定义的提醒音讯页面卡塔尔(قطر‎

2、调节器中经过$this->success(卡塔尔(英语:State of Qatar)、$this->error(卡塔尔来调用

   $message:提示新闻、$jumpUrl:跳转地址

3、改过配置文件,设置提示音信页面包车型大巴渠道

   'TMPL_ACTION_EMuranoROENVISION'  =>  'Public:success', // 暗中同意错误跳转对应的模板文件

   'TMPL_ACTION_SUCCESS'=>  'Public:success', // 暗许成功跳转对应的沙盘模拟经营文件

 十风流倜傥、ThinkPHP中获取模型对象的秘籍

1、$model = D("模型文件名"卡塔尔国;//必得新建立模型型文件

2、$model = D("表名"卡塔尔;//不用新建立模型型文件

2、$model = M("表名"卡塔尔(قطر‎;//不用新建立模型型文件

留心:表名最佳是总体大写

      M("bbsInfo")或D("bbsInfo")--->表名:bbs_info

        十三、数据库操作

1、查询多条记下,再次回到:二维数组

   $result = $model->select();

   $result = $model->where()->select();

   $result = $model->order()->select();

   $result = $model->limit()->select();

   $result = $model->where()->order()->limit()->select();

2、删除记录,再次来到:受影响的行数

   $result = $model->delete();

   $result = $model->where()->delete();

3、查询一条记下,再次来到:风华正茂维关联数组

   $result = $model->find();

   $result = $model->where()->find();

4、改善记录,再次回到:受影响的行数

   $result = $model->save(生龙活虎维关联数组卡塔尔国;

   $result = $model->where(卡塔尔->save(朝气蓬勃维关联数组卡塔尔(英语:State of Qatar);

5、增多记录,再次来到:1卡塔尔(قطر‎受影响的行数,2卡塔尔新加记录的主键值

   $result = $model->add(意气风发维关联数组卡塔尔(英语:State of Qatar);

   $result = $model->data(意气风发维关联数组卡塔尔->add(卡塔尔(英语:State of Qatar);

6、试行sql语句,再次来到:二维数组

   $result = M()->query("select语句");

7、实施insert、update、delete语句,重返:受影响的行数

   $result = M()->execute("insert|update|delete语句");

8、count查询,返回:整数

   $result = $model->count();

   $result = $model->where()->count();

9、sum查询,返回:数字

   $result = $model->sum(字段名);

   $result = $model->where()->sum(字段名);

10、avg查询,返回:数字

   $result = $model->avg(字段名);

   $result = $model->where()->avg(字段名);

11、max查询,返回:数字

   $result = $model->max(字段名);

   $result = $model->where()->max(字段名);

12、min查询,返回:数字

   $result = $model->min(字段名);

   $result = $model->where()->min(字段名);

13、字段值自增

   $result = $model->where()->setInc("字段名");//加1

   $result = $model->where()->setInc("字段名",5);//加5

14、字段值自减

   $result = $model->where()->setDec("字段名");//减1

   $result = $model->where()->setDec("字段名",5);//减5

 

    在多少个页面供给平等的代码段时,能够在Controller文件夹下建设布局一个BaseController调整器来世襲Controller父类,并且在在那之中增多方法来促成多个页面中相近的代码效果。在逐生机勃勃页面包车型大巴调整器中直接接轨BaseController这些类,如下代码:

 class Controller{}
     class BaseController extends Controller
  {
    public function _initialize()
    {}
  }

   class ShowController extends BaseController
  {}
class Person
{
  public function __construct()
  {
    if(method_exists($this,_initialize))
     {
       $this->_initialize()
     }
  }
}
class Son
{
  //相当于子类的构造函数
  public function _initialize()
  {}
}
$s = new Son();

      十二、TP自带的类

           ThinkPHP自带的分页类

library/ThinkPHP/Library/Think/Page.class.php

分页类的施用

use ThinkPage;

$page = new Page(总记录数,每页记录数=20卡塔尔;

$result= $model->limit($page->firstRow,$page->listRows)->select();

$pageList = $page->show();//分页栏

           ThinkPHP自带的证实码类

library/ThinkPHP/Library/Think/Verify.class.php

1、加载验证码

   1卡塔尔(قطر‎调控器里的代码

     $verify = new Verify();

     $verify->length = 5;//字符个数

     $verify->fontSize 20;//字符大小

     $verify->entry(卡塔尔国;//展现验证码

   2卡塔尔(قطر‎视图页面呈现图片

     <img src="__APP__/控制器/方法">

2、验证码的印证

   $verify = new Verify();

   $result = $verify->check(顾客输入的验证码卡塔尔(قطر‎;

           ThinkPHP自带的文件上传类

library/ThinkPHP/Library/Think/Upload.class.php

风姿浪漫种:只上传三个文件

$upload = new Upload();//实例化

$upload->maxSize = 2001000;//最大尺寸(以字节为单卡塔尔(قطر‎

$upload->exts = array("jpg","gif"卡塔尔国;//允许上传的文本的恢宏名

$upload->autoSub = false;//用时创制贰个子目录

$upload->rootPath = "./";//保存路线的根目录

$upload->savePath = "public/upfile/";//保存路线

//上传文件

$myFile = $_FILES["myFile"];

$result = $upload->uploadOne($myFile);

三种:多文件上传

$upload = new Upload();//实例化

$upload->maxSize = 二零零一000;//最大尺寸(以字节为单卡塔尔(قطر‎

$upload->exts = array("jpg","gif"卡塔尔(قطر‎;//允许上传的文本的恢弘名

$upload->autoSub = false;//用时创制二个子目录

$upload->rootPath = "./";//保存路线的根目录

$upload->save帕特h = "public/upfile/";//保存路线

//上传文件

 $result = $upload->upload();

 

留意:php.ini中与上传相关的选料

1、是或不是支持文件上传

   file_uploads = On|Off

2、上传文件一时存款和储蓄目录

   ;upload_tmp_dir = d:/hello

3、允许上传的最大文件

   upload_max_filesize = 2M

4、同一表单最多能够上传18个公文

   max_file_uploads = 20

5、post表单最大提交的数据量

   post_max_size = 8M

6、最多可占用多少内部存款和储蓄器

   memory_limit = 128M

        已经好长时间没有用过TP框架了,大概的作用点也是有如此多......

本文由澳门新葡8455手机版发布于计算机编程,转载请注明出处:ThinkPHP实现附件上传功能_php实例_脚本之家

上一篇:Page分页类学习,ThinkPHP实现分页功能_php实例_脚本 下一篇:没有了
猜你喜欢
热门排行
精彩图文
  • 应用程式开拓平台,Smobiler开采平台
    应用程式开拓平台,Smobiler开采平台
    最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 .Net语言 APP开发平台——Smobiler学习日志:如何在手机上实现电
  • NET开拓能源大全
    NET开拓能源大全
    目录 API 应用框架(ApplicationFrameworks) 应用模板(ApplicationTemplates) 人工智能(ArtificialIntelligence) 程序集处理(AssemblyManipulation) 资源(Assets) 认证和授
  • STM32就学笔记之C语言篇
    STM32就学笔记之C语言篇
    【unsigned】 1、rewind(FILE *卡塔尔(英语:State of Qatar):回到文件开头处 2、fprintf(), fscanf(), fgets(), fputs() (1)、fprintf(#FILE *restrict#, #const char *restrict,...#卡塔尔(英语
  • python面向对象三大特征,面向对象
    python面向对象三大特征,面向对象
    面向对象-组合 风流罗曼蒂克、面向进度与面向对象的简要介绍 一、继承 大器晚成 什么是多态动态绑定(在这里起彼伏的背景下行使时,一时也称得上多
  • HttpRuntime的认知与抓好明白,异步HTTP乞请操作
    HttpRuntime的认知与抓好明白,异步HTTP乞请操作
    一、说明 上边最早介绍HttpRuntime的Web.config里的构造 1卡塔尔(英语:State of Qatar) 那些类 是本身 在安分守己项目中,优化驱除实际难题时,不参照第三方代码