thinkphp实现图片上传功能
关于图片上传,实现方法很多,比如可以用jQuery,当然,我们的thinkPHP内置了关于图片上传的功能,我们可以直接使用,使用方法如下:
首先,是表单书写,我们建立如下表单:
<formaction="__URL__/addChk"method="post"enctype="multipart/form-data"> <tablecellspacing="1"cellpadding="2"width="99%"align="center"border="0"> <tbody> <tr> <thalign="left"colspan="2"height="25">添加新游戏</th> </tr> <tr> <tdwidth="17%"height="23">游戏名称</td> <tdwidth="83%"><strong><inputtype="text"name="gamename"/></strong></td> </tr> <tr> <tdheight="23">游戏图片</td> <td><inputtype="file"name="gameimg"/></td> </tr> <tr> <tdwidth="17%"height="23">游戏简介<span></span></td> <tdwidth="83%"><textareaname="gameinfo"cols="30"rows="5"></textarea></td> </tr> <tr> <tdheight="23">游戏地址:</td> <td> <inputtype="text"name="gamelink"/></td> </tr> <tr> <tdheight="23"colspan="2"><inputtype="submit"value="添加"/> <inputtype="reset"value="重新填写"/></td> </tr> </tbody> </table> </form>
这里有个非常重要的地方,就是一定要在表单项目添加上enctype="multipart/form-data"这一点是非常重要的,因为这个是允许你上传的类型的,如果没有他,就不能上传,关于enctype的其他几种类型,我会在以后的文章上说明。这里我们新建php文件AddAction.class.php,代码如下;
classAddActionextendsAction{ /** *说明:ThinkPHP文件上传测试函数 *版本:1.0 */ publicfunctionaddChk(){ //导入图片上传类 import("ORG.Net.UploadFile"); //实例化上传类 $upload=newUploadFile(); $upload->maxSize=3145728; //设置文件上传类型 $upload->allowExts=array('jpg','gif','png','jpeg'); //设置文件上传位置 $upload->savePath="./Public/Uploads/";//这里说明一下,由于ThinkPHP是有入口文件的,所以这里的./Public是指网站根目录下的Public文件夹 //设置文件上传名(按照时间) $upload->saveRule="time"; if(!$upload->upload()){ $this->error($upload->getErrorMsg()); }else{ //上传成功,获取上传信息 $info=$upload->getUploadFileInfo(); } //保存表单数据,包括上传的图片 $game=M("Game"); $game->create(); $savename=$info[0]['savename']; //$savepath=$info[0]['savepath']; //$aa=$savepath.$savename; //dump($aa); $imgurl="http://demo.dutycode.com/Public/Uploads/".$savename;//这里是设置文件的url注意使用.不是+ //dump($imgurl); $data['gamename']=$_POST['gamename']; $data['gameimg']=$imgurl; $data['gameinfo']=$_POST['gameinfo']; $data['gamelink']=$_POST['gamelink']; $data['publishtime']=date("Y-m-dH:i:s"); $res=$game->add($data);//写入数据库 if($res){ $this->redirect("addGame","",2,"添加成功!两秒后跳回"); }else{ $this->redirect("addGame","",2,"失败!两秒后跳回"); } }
这里说明一下,首先是php中的连接符是点(.)不是+,这一点在很多java使用者里面通常使用+连接两个字符串的,所以这一点容易混淆。
以上就是针对thinkphp图片上传功能实现代码的介绍,帮助大家更好的学习掌握php程序设计。