thinkphp实现图片上传功能


Posted in PHP onJanuary 13, 2016

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

PHP 相关文章推荐
php在文件指定行中写入代码的方法
May 23 PHP
PHP zip扩展Linux下安装过程分享
May 05 PHP
浅析ThinkPHP中execute和query方法的区别
Jun 13 PHP
php+xml编程之xpath的应用实例
Jan 24 PHP
php实现字符串翻转的方法
Mar 27 PHP
ThinkPHP3.2.3实现分页的方法详解
Jun 03 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
Nov 02 PHP
php 变量引用与变量销毁机制详细介绍
Dec 05 PHP
PHP计算近1年的所有月份
Mar 13 PHP
php表单文件iframe异步上传实例讲解
Jul 26 PHP
php的优点总结 php有哪些优点
Jul 19 PHP
php自动加载代码实例详解
Feb 26 PHP
PHP实现伪静态方法汇总
Jan 13 #PHP
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
Jan 12 #PHP
优化WordPress中文章与评论的时间显示
Jan 12 #PHP
win平台安装配置Nginx+php+mysql 环境
Jan 12 #PHP
WordPress中重置文章循环的rewind_posts()函数讲解
Jan 11 #PHP
深入解析WordPress中加载模板的get_template_part函数
Jan 11 #PHP
PHP实现基于文本的摩斯电码生成器
Jan 11 #PHP
You might like
PHP中几种常见的超时处理全面总结
2012/09/11 PHP
解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别
2013/06/24 PHP
php实现可用于mysql,mssql,pg数据库操作类
2014/12/13 PHP
PHP中JSON的应用技巧
2015/10/10 PHP
javascript之水平横向滚动歌词同步的应用
2007/05/07 Javascript
jQuery Flash/MP3/Video多媒体插件
2010/01/18 Javascript
js中复制行和删除行的操作实例
2013/06/25 Javascript
从零学JS之你需要了解的几本书
2014/05/19 Javascript
IE中图片的onload事件无效问题和解决方法
2014/06/06 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
js实现鼠标点击文本框自动选中内容的方法
2015/08/20 Javascript
轻松实现Bootstrap图片轮播
2020/04/20 Javascript
Javascript将数字转化成为货币格式字符串
2016/06/22 Javascript
JavaScript学习笔记整理_用于模式匹配的String方法
2016/09/19 Javascript
深入学习jQuery中的data()
2016/12/22 Javascript
用jquery的attr方法实现图片切换效果
2017/02/05 Javascript
jQuery实现弹窗居中效果类似alert()
2017/02/27 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
2018/08/14 Javascript
Vue实战教程之仿肯德基宅急送App
2019/07/19 Javascript
js实现消灭星星(web简易版)
2020/03/24 Javascript
vue3.0封装轮播图组件的步骤
2021/03/04 Vue.js
本地文件上传到七牛云服务器示例(七牛云存储)
2014/01/11 Python
简洁的十分钟Python入门教程
2015/04/03 Python
使用Python3 编写简单信用卡管理程序
2016/12/21 Python
Python中with及contextlib的用法详解
2017/06/08 Python
Python爬虫之xlml解析库(全面了解)
2017/08/08 Python
python 监测内存和cpu的使用率实例
2019/11/28 Python
opencv python Canny边缘提取实现过程解析
2020/02/03 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
2020/02/11 Python
基于Pyinstaller打包Python程序并压缩文件大小
2020/05/28 Python
微软巴西官方网站:Microsoft Brasil
2019/09/26 全球购物
历史专业毕业生的自我鉴定
2013/11/15 职场文书
银行类自荐信
2014/02/04 职场文书
小学教师读书活动总结
2014/07/08 职场文书
详解Mysql和Oracle之间的误区
2021/05/18 MySQL