服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|JavaScript|

服务器之家 - 编程语言 - PHP教程 - thinkphp实现图片上传功能

thinkphp实现图片上传功能

2020-12-16 15:57losetowin PHP教程

这篇文章主要介绍了thinkphp实现图片上传功能的相关资料,需要的朋友可以参考下

关于图片上传,实现方法很多,比如可以用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程序设计。

延伸 · 阅读

精彩推荐