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 相关文章推荐
MySql中正则表达式的使用方法描述
Jul 30 PHP
php 不同编码下的字符串长度区分
Sep 26 PHP
深入解析php之sphinx
May 15 PHP
CodeIgniter模板引擎使用实例
Jul 15 PHP
php CI框架插入一条或多条sql记录示例
Jul 29 PHP
浅析PHP编程中10个最常见的错误
Aug 08 PHP
php计算两个坐标(经度,纬度)之间距离的方法
Apr 17 PHP
thinkphp autoload 命名空间自定义 namespace
Jul 17 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
Jun 10 PHP
PHP实现git部署的方法教程
Dec 19 PHP
PHP实现的操作数组类库定义与用法示例
May 24 PHP
TP5框架实现的数据库备份功能示例
Apr 05 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
从Web查询数据库之PHP与MySQL篇
2009/09/25 PHP
PHP分页效率终结版(推荐)
2013/07/01 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
2019/04/02 PHP
javascript几个易错点记录
2014/11/26 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
jQuery焦点控制图层展示延迟隐藏的方法
2015/03/09 Javascript
javascript中返回顶部按钮的实现
2015/05/05 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
javascript获取重复次数最多的字符
2015/07/08 Javascript
jQuery实现非常实用漂亮的select下拉菜单选择效果
2015/11/06 Javascript
基于Jquery实现焦点图淡出淡入效果
2015/11/30 Javascript
vue2.0 自定义日期时间过滤器
2017/06/07 Javascript
详解vue-router和vue-cli以及组件之间的传值
2017/07/04 Javascript
基于javaScript的this指向总结
2017/07/22 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
2020/07/17 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
[47:55]Ti4第二日主赛事败者组 NaVi vs EG 1
2014/07/20 DOTA
Python最长公共子串算法实例
2015/03/07 Python
使用Python脚本对Linux服务器进行监控的教程
2015/04/02 Python
Python中atexit模块的基本使用示例
2015/07/08 Python
举例讲解Python中的迭代器、生成器与列表解析用法
2016/03/20 Python
Python登录注册验证功能实现
2018/06/18 Python
Python时间序列处理之ARIMA模型的使用讲解
2019/04/02 Python
Python使用循环神经网络解决文本分类问题的方法详解
2020/01/16 Python
css3实现信纸/同学录效果的示例代码
2018/12/11 HTML / CSS
利用CSS3的特性改变文本选中时的颜色
2013/09/11 HTML / CSS
Bootstrap 学习分享
2012/11/12 HTML / CSS
跑鞋、网球鞋、网球拍、服装及装备:Holabird Sports
2016/09/19 全球购物
Europcar英国:英国汽车和货车租赁
2017/01/21 全球购物
Bergfreunde丹麦:登山装备网上零售商
2017/02/26 全球购物
英国知名美妆护肤在线商城:Zest Beauty
2018/04/24 全球购物
德国苹果商店:MacTrade
2020/05/18 全球购物
科级干部考察材料
2014/02/15 职场文书
2014年客房部工作总结
2014/11/22 职场文书
V Rising 服务器搭建图文教程
2022/06/16 Servers