关于图片上传,实现方法很多,比如可以用jQuery,当然,我们的thinkPHP内置了关于图片上传的功能,我们可以直接使用,使用方法如下:
首先,是表单书写,我们建立如下表单:
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
|
< 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,代码如下;
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
|
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程序设计。