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 相关文章推荐
分页显示Oracle数据库记录的类之二
Oct 09 PHP
一个php Mysql类 可以参考学习熟悉下
Jun 21 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
Apr 02 PHP
微信公众平台之快递查询功能用法实例
Apr 14 PHP
PHP获取音频文件的相关信息
Jun 22 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
Jan 04 PHP
PHP互换两个变量值的方法(不用第三变量)
Nov 14 PHP
PHP判断密码强度的方法详解
May 26 PHP
PHP封装的page分页类定义与用法完整示例
Dec 24 PHP
thinkphp5使html5实现动态跳转的例子
Oct 16 PHP
php+ajax实现文件切割上传功能示例
Mar 03 PHP
PHP生成随机密码4种方法及性能对比
Dec 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
PHP中使用asort进行中文排序失效的问题处理
2014/08/18 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
2020/04/14 PHP
cnblogs csdn 代码运行框实现代码
2009/11/02 Javascript
在网页中使用document.write时遭遇的奇怪问题
2010/08/24 Javascript
jQuery控制输入框只能输入数值的小例子
2013/03/20 Javascript
JS中的prototype与面向对象的实例讲解
2013/05/22 Javascript
javascript实现回到顶部特效
2015/05/06 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
2015/11/18 Javascript
js HTML5上传示例代码完整版
2016/10/10 Javascript
详解如何较好的使用js
2016/12/16 Javascript
自适应布局meta标签中viewport、content、width、initial-scale、minimum-scale、maximum-scale总结
2017/08/18 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
2018/02/06 Javascript
JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
2019/02/21 Javascript
微信小程序页面间传递数组对象方法解析
2019/11/06 Javascript
微信小程序实现图片压缩
2019/12/03 Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
2020/05/09 Javascript
vue props 一次传多个值实例
2020/07/22 Javascript
[11:44]Ti9 OG夺冠时刻
2019/08/25 DOTA
python操作MySQL数据库的方法分享
2012/05/29 Python
从Python的源码来解析Python下的freeblock
2015/05/11 Python
mac下如何将python2.7改为python3
2018/07/13 Python
Python3.6使用tesseract-ocr的正确方法
2018/10/17 Python
Django中使用 Closure Table 储存无限分级数据
2019/06/06 Python
Python3分析处理声音数据的例子
2019/08/27 Python
三个python爬虫项目实例代码
2019/12/28 Python
Keras 切换后端方式(Theano和TensorFlow)
2020/06/19 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
html5使用canvas绘制太阳系效果
2014/12/15 HTML / CSS
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
中学生家长评语大全
2014/04/16 职场文书
班主任工作实习计划
2015/01/16 职场文书
2015年大学生实习评语
2015/03/25 职场文书
中学感恩教育活动总结
2015/05/05 职场文书
七一慰问简报
2015/07/20 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书
Python使用pyecharts控件绘制图表
2022/06/05 Python