ThinkPHP文件上传实例教程


Posted in PHP onAugust 22, 2014

文件上传是很多PHP程序项目中常见的一个功能,今天本文就来分享一个完整的实例,来实现ThinkPHP文件上传的功能。具体方法如下:

一、action部分:

FileAction.class.php页面代码如下:

<?php
class FileAction extends Action{
  function index(){
    $file=M('file');
    $list=$file->select();
    $this->assign('filelist',$list);
    $this->display();  
  }  
  function upload(){
    //文件上传地址提交给他,并且上传完成之后返回一个信息,让其写入数据库  
    if(empty($_FILES)){
      $this->error('必须选择上传文件');  
    }else{
      $a=$this->up();
      if(isset($a)){
        //写入数据库的自定义c方法
        if($this->c($a)){
          $this->success('上传成功');  
        }
        else{
          $this->error('写入数据库失败');  
        }
      }else{
        $this-error('上传文件异常,请与系统管理员联系');  
      }
    }
  }
  private function c($data){
    $file=M('file');
    $num  =  '0';
    for($i = 0; $i < count($data)-1; $i++) {
      $data['filename']=$data[$i]['savename'];      
      if( $file->data($data)->add())
      {
        $num++;
      }
    }
    if($num==count($data)-1)
    {
      return true;  
    }else
    {
      return false;
    }
  }
  private function up(){
    //完成与thinkphp相关的,文件上传类的调用  
    import('@.Org.UploadFile');//将上传类UploadFile.class.php拷到Lib/Org文件夹下
    $upload=new UploadFile();
    $upload->maxSize='1000000';//默认为-1,不限制上传大小
    $upload->savePath='./Public/Upload/';//保存路径建议与主文件平级目录或者平级目录的子目录来保存  
    $upload->saveRule=uniqid;//上传文件的文件名保存规则
    $upload->uploadReplace=true;//如果存在同名文件是否进行覆盖
    $upload->allowExts=array('jpg','jpeg','png','gif');//准许上传的文件类型
    $upload->allowTypes=array('image/png','image/jpg','image/jpeg','image/gif');//检测mime类型
    $upload->thumb=true;//是否开启图片文件缩略图
    $upload->thumbMaxWidth='300,500';
    $upload->thumbMaxHeight='200,400';
    $upload->thumbPrefix='s_,m_';//缩略图文件前缀
    $upload->thumbRemoveOrigin=1;//如果生成缩略图,是否删除原图
    
    if($upload->upload()){
      $info=$upload->getUploadFileInfo();
      return $info;
    }else{
      $this->error($upload->getErrorMsg());//专门用来获取上传的错误信息的  
    }  
  }
}
?>

二、view模板部分:

模板文件index.html代码如下:

<html>
<body>
<volist name="filelist" id="vo">
 小图:<img src="__PUBLIC__/upload/s_{$vo['filename']}" /><br />
 大图:<img src="__PUBLIC__/upload/m_{$vo['filename']}" /><br />
</volist>
<form action="__URL__/upload" method="post" enctype="multipart/form-data">
  <input type="file" name="file[]" /><br />
  <input type="file" name="file[]" /><br />
  <input type="file" name="file[]" /><br />
  <input type="submit" value="上传" />
</form>

</body>
</html>

相信本文所述实例对大家的ThinkPHP程序开发可以起到一定的借鉴作用。

PHP 相关文章推荐
跟我学小偷程序之成功偷取首页(第三天)
Oct 09 PHP
PHP与SQL注入攻击[一]
Apr 17 PHP
php下判断数组中是否存在相同的值array_unique
Mar 25 PHP
php set_time_limit(0) 设置程序执行时间的函数
May 26 PHP
php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
Jul 14 PHP
php 无法加载mcrypt.dll的解决办法
Apr 03 PHP
PHP常用的缓存技术汇总
May 05 PHP
CI框架自动加载session出现报错的解决办法
Jun 17 PHP
php实现把url转换迅雷thunder资源下载地址的方法
Nov 07 PHP
Yii分页用法实例详解
Dec 04 PHP
php邮箱地址正则表达式验证
Nov 13 PHP
laravel框架添加数据,显示数据,返回成功值的方法
Oct 11 PHP
ThinkPHP中ajax使用实例教程
Aug 22 #PHP
ThinkPHP中的常用查询语言汇总
Aug 22 #PHP
ThinkPHP多语言支持与多模板支持概述
Aug 22 #PHP
ThinkPHP中的三大自动简介
Aug 22 #PHP
PHP实现克鲁斯卡尔算法实例解析
Aug 22 #PHP
php中限制ip段访问、禁止ip提交表单的代码分享
Aug 22 #PHP
destoon出现验证码不显示时的紧急处理方法
Aug 22 #PHP
You might like
DOTA2【瓜皮时刻】Vol.91 RTZ山史最惨“矿难”
2021/03/05 DOTA
PHP语法速查表
2006/12/06 PHP
PHP截取指定图片大小的方法
2014/12/10 PHP
PHP编写daemon process详解及实例代码
2016/09/30 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
2016/10/17 PHP
收藏一些不常用,但是有用的代码
2007/03/12 Javascript
javascript实现的listview效果
2007/04/28 Javascript
jquery UI 1.72 之datepicker
2009/12/29 Javascript
js中函数调用的两种常用方法使用介绍
2014/07/17 Javascript
JavaScript结合AJAX_stream实现流式显示
2015/01/08 Javascript
JS实现日期时间动态显示的方法
2015/12/07 Javascript
JS模拟bootstrap下拉菜单效果实例
2016/06/17 Javascript
JavaScript数据类型学习笔记分享
2016/09/01 Javascript
jquery获取下拉框中的循环值
2017/02/08 Javascript
jQuery插件HighCharts实现的2D回归直线散点效果示例【附demo源码下载】
2017/03/09 Javascript
JS实现的简单下拉框联动功能示例
2018/05/11 Javascript
Webpack之tree-starking 解析
2018/09/11 Javascript
python使用matplotlib画饼状图
2018/09/25 Python
python 与服务器的共享文件夹交互方法
2018/12/27 Python
django的settings中设置中文支持的实现
2019/04/28 Python
django如何通过类视图使用装饰器
2019/07/24 Python
Python自动化测试笔试面试题精选
2020/03/12 Python
Python如何获取文件指定行的内容
2020/05/27 Python
Python中的流程控制详解
2021/02/18 Python
HTML5实现的震撼3D焦点图动画的示例代码
2019/09/26 HTML / CSS
HTML5+CSS3实现拖放(Drag and Drop)示例
2014/07/07 HTML / CSS
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
美国领先的精品家居照明和装饰产品在线零售商:LightsOnline.com
2018/01/23 全球购物
美国高级工作服品牌:Carhartt
2018/01/25 全球购物
美国在线家居装饰店:Belle&June
2018/10/24 全球购物
List, Set, Map是否继承自Collection接口?
2016/05/16 面试题
技校生自我鉴定
2013/12/08 职场文书
公司请假条范文
2014/04/11 职场文书
新闻传播专业求职信
2014/07/22 职场文书
2014大学校园光棍节活动策划书
2014/09/29 职场文书
关于@OnetoMany关系映射的排序问题,使用注解@OrderBy
2021/12/06 Java/Android