关于图片上传,实现方法很多,比如可以用jQuery,当然,我们的thinkPHP内置了关于图片上传的功能,我们可以直接使用,使用方法如下:
首先,是表单书写,我们建立如下表单:
<form action="__URL__/addChk" method="post" enctype="multipart/form-data"><table cellspacing="1" cellpadding="2" width="99%" align="center" border="0"> <tbody><tr><th align="left" colspan="2" height="25">添加新游戏</th></tr><tr><td width="17%" height="23">游戏名称</td><td width="83%"><strong><input type="text" name="gamename" /></strong></td></tr><tr><td height="23">游戏图片</td><td ><input type="file" name="gameimg"/></td></tr><tr><td width="17%" height="23">游戏简介<span></span></td><td width="83%"><textarea name="gameinfo" cols="30" rows="5"></textarea></td></tr><tr><td height="23">游戏地址:</td><td><input type="text" name="gamelink"/></td></tr><tr><td height="23" colspan="2" ><input type="submit" value="添加" /><input type="reset" value="重新填写"/></td></tr> </tbody> </table> </form>
这里有个非常重要的地方,就是一定要在表单项目添加上enctype="multipart/form-data"这一点是非常重要的,因为这个是允许你上传的类型的,如果没有他,就不能上传,关于enctype的其他几种类型,我会在以后的文章上说明。这里我们新建php文件AddAction.class.php,代码如下;
class AddAction extends Action{/*** 说明:ThinkPHP文件上传测试函数* 版本:1.0*/public function addChk(){//导入图片上传类import("ORG.Net.UploadFile");//实例化上传类$upload = new UploadFile();$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-d H:i:s");$res = $game->add($data);//写入数据库if ($res){ $this->redirect("addGame","",2,"添加成功!两秒后跳回");}else{ $this->redirect("addGame","",2,"失败!两秒后跳回");} } 这里说明一下,首先是php中的连接符是点(.)不是+,这一点在很多java使用者里面通常使用+连接两个字符串的,所以这一点容易混淆。
以上就是针对thinkphp图片上传功能实现代码的介绍,帮助大家更好的学习掌握php程序设计。