当前位置:首页 > CMS教程 > Thinkphp > 列表

thinkphp实现图片上传功能

发布:smiling 来源: PHP粉丝网  添加日期:2021-07-05 11:45:41 浏览: 评论:0 

这篇文章主要介绍了thinkphp实现图片上传功能的相关资料,需要的朋友可以参考下,关于图片上传,实现方法很多,比如可以用jQuery,当然,我们的thinkPHP内置了关于图片上传的功能,我们可以直接使用,使用方法如下:

首先,是表单书写,我们建立如下表单:

  1. <form action="__URL__/addChk" method="post" enctype="multipart/form-data">  
  2.  <table cellspacing="1" cellpadding="2" width="99%" align="center" border="0">  
  3.   <tbody>  
  4.    <tr>  
  5.    <th align="left" colspan="2" height="25">添加新游戏</th>  
  6.    </tr>  
  7.    <tr>  
  8.    <td width="17%" height="23">游戏名称</td>  
  9.    <td width="83%"><strong><input type="text" name="gamename" /></strong></td>  
  10.    </tr>  
  11.    <tr>  
  12.    <td height="23">游戏图片</td>  
  13.    <td ><input type="file" name="gameimg"/></td>  
  14.    </tr>  
  15.    <tr>  
  16.    <td width="17%" height="23">游戏简介<span></span></td>  
  17.    <td width="83%"><textarea name="gameinfo" cols="30" rows="5"></textarea></td>  
  18.    </tr>  
  19.    <tr>  
  20.    <td height="23">游戏地址:</td>  
  21.    <td>  
  22.    <input type="text" name="gamelink"/></td>  
  23.    </tr>  
  24.    <tr>  
  25.    <td height="23" colspan="2" ><input type="submit" value="添加" />   
  26.     <input type="reset" value="重新填写"/></td>  
  27.    </tr>  
  28.   </tbody>  
  29.   </table>  
  30. </form> 

这里有个非常重要的地方,就是一定要在表单项目添加上enctype="multipart/form-data"这一点是非常重要的,因为这个是允许你上传的类型的,如果没有他,就不能上传,关于enctype的其他几种类型,我会在以后的文章上说明,这里我们新建php文件AddAction.class.php,代码如下;

  1. class AddAction extends Action{  
  2.  /**  
  3.  * 说明:ThinkPHP文件上传测试函数  
  4.  * 版本:1.0  
  5.  
  6.  */ 
  7.  public function addChk(){  
  8.    //导入图片上传类  
  9.    import("ORG.Net.UploadFile");  
  10.    //实例化上传类  
  11.    $upload = new UploadFile();  
  12.    $upload->maxSize = 3145728;  
  13.    //设置文件上传类型  
  14.    $upload->allowExts = array('jpg','gif','png','jpeg');  
  15.    //设置文件上传位置  
  16.    $upload->savePath = "./Public/Uploads/";//这里说明一下,由于ThinkPHP是有入口文件的,所以这里的./Public是指网站根目录下的Public文件夹  
  17.    //设置文件上传名(按照时间)  
  18.    $upload->saveRule = "time";  
  19.    if (!$upload->upload()){  
  20.     $this->error($upload->getErrorMsg());  
  21.    }else{  
  22.     //上传成功,获取上传信息  
  23.     $info = $upload->getUploadFileInfo();  
  24.    }  
  25.    
  26.    //保存表单数据,包括上传的图片  
  27.    $game = M("Game");  
  28.    $game->create();  
  29.    $savename = $info[0]['savename'];  
  30.    //$savepath = $info[0]['savepath'];  
  31.    //$aa = $savepath.$savename;  
  32.    //dump($aa);  
  33.    $imgurl = "http://demo.dutycode.com/Public/Uploads/".$savename;//这里是设置文件的url注意使用.不是+  
  34.    //dump($imgurl);  
  35.    $data['gamename'] = $_POST['gamename'];  
  36.    $data['gameimg'] = $imgurl;  
  37.    $data['gameinfo'] = $_POST['gameinfo'];  
  38.    $data['gamelink'] = $_POST['gamelink'];  
  39.    $data['publishtime'] = date("Y-m-d H:i:s");  
  40.    $res = $game->add($data);//写入数据库  
  41.    if ($res){  
  42.     $this->redirect("addGame","",2,"添加成功!两秒后跳回");  
  43.    }else{  
  44.     $this->redirect("addGame","",2,"失败!两秒后跳回");  
  45.    }  
  46. }  

这里说明一下,首先是php中的连接符是点(.)不是+,这一点在很多java使用者里面通常使用+连接两个字符串的,所以这一点容易混淆。

Tags: thinkphp图片上传

分享到: