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 相关文章推荐
PHP字符串 ==比较运算符的副作用
Oct 21 PHP
兼容性最强的PHP生成缩略图的函数代码(修改版)
Jan 18 PHP
PHP 验证码不显示只有一个小红叉的解决方法
Sep 30 PHP
ThinkPHP页面跳转success与error方法概述
Jun 25 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
Sep 24 PHP
php实现源代码加密的方法
Jul 11 PHP
php析构函数的简单使用说明
Aug 24 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
Mar 21 PHP
php版阿里大于(阿里大鱼)短信发送实例详解
Nov 30 PHP
PHP中非常有用却鲜有人知的函数集锦
Aug 17 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
Feb 27 PHP
php 中的信号处理操作实例详解
Mar 04 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
PHP base64+gzinflate压缩编码和解码代码
2008/10/03 PHP
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
php 进度条实现代码
2009/03/10 PHP
php构造函数实例讲解
2013/11/13 PHP
php使用指定字符列表生成随机字符串的方法
2015/04/18 PHP
PHP的Yii框架中移除组件所绑定的行为的方法
2016/03/18 PHP
随窗体滑动的小插件sticky源码
2013/06/21 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
8个超实用的jQuery功能代码分享
2015/01/08 Javascript
text-align:justify实现文本两端对齐 兼容IE
2015/08/19 Javascript
详解iframe与frame的区别
2016/01/13 Javascript
javascript产生随机数方法汇总
2016/01/25 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
jQuery+CSS实现简单切换菜单示例
2016/07/27 Javascript
bootstrap为水平排列的表单和内联表单设置可选的图标
2017/02/15 Javascript
Vue中在新窗口打开页面及Vue-router的使用
2018/06/13 Javascript
node 文件上传接口的转发的实现
2019/09/23 Javascript
JS箭头函数和常规函数之间的区别实例分析【 5 个区别】
2020/05/27 Javascript
[40:05]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
发布你的Python模块详解
2016/09/15 Python
Python利用flask sqlalchemy实现分页效果
2020/08/02 Python
Python栈算法的实现与简单应用示例
2017/11/01 Python
对Python协程之异步同步的区别详解
2019/02/19 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
2019/07/31 Python
Python获取一个用户名的组ID过程解析
2019/09/03 Python
基于python实现把图片转换成素描
2019/11/13 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
Python函数递归调用实现原理实例解析
2020/08/11 Python
CSS3 简单又实用的5个属性
2010/03/04 HTML / CSS
canvas实现高阶贝塞尔曲线(N阶贝塞尔曲线生成器)
2018/01/10 HTML / CSS
标准自荐信范文
2014/01/29 职场文书
2014年公务员退休工资改革方案
2014/10/01 职场文书
工伤死亡理赔协议书
2014/10/20 职场文书
讲座开场白台词和结束语
2015/05/29 职场文书
CSS实现多个元素在盒子内两端对齐效果
2021/03/30 HTML / CSS