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 相关文章推荐
15种PHP Encoder的比较
Apr 17 PHP
PHP中Date获取时间不正确怎么办
Jun 05 PHP
一个php Mysql类 可以参考学习熟悉下
Jun 21 PHP
PHP 实现多服务器共享 SESSION 数据
Aug 15 PHP
header跳转和include包含问题详解
Sep 08 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
Jun 26 PHP
PHP中$_SERVER的详细参数与说明介绍
Oct 26 PHP
php判断是否为json格式的方法
Mar 04 PHP
php中出现空白页的原因及解决方法汇总
Jul 08 PHP
php轻量级的性能分析工具xhprof的安装使用
Aug 12 PHP
thinkphp项目如何自定义微信分享描述内容
Feb 20 PHP
微信公众号开发之通过接口删除菜单
Feb 20 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 面向对象详解
2012/09/13 PHP
php返回相对时间(如:20分钟前,3天前)的方法
2015/04/14 PHP
php实现分页显示
2015/11/03 PHP
php版微信公众平台实现预约提交后发送email的方法
2016/09/26 PHP
mouse_on_title.js
2006/08/25 Javascript
javascript 变量作用域 代码分析
2009/06/26 Javascript
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
JS图片切换的具体方法(带缩略图版)
2013/11/12 Javascript
JavaScript File API实现文件上传预览
2016/02/02 Javascript
JS操作COOKIE实现备忘记录的方法
2016/04/01 Javascript
Javascript对象字面量的理解
2016/06/22 Javascript
JavaScript页面实时显示当前时间实例代码
2016/10/23 Javascript
EasyUI实现下拉框多选功能
2017/11/07 Javascript
node.js用fs.rename强制重命名或移动文件夹的方法
2017/12/27 Javascript
vue实现密码显示隐藏切换功能
2018/02/23 Javascript
vue组件中使用props传递数据的实例详解
2018/04/08 Javascript
浅析前端路由简介以及vue-router实现原理
2018/06/01 Javascript
vue多级复杂列表展开/折叠及全选/分组全选实现
2018/11/05 Javascript
[18:20]DOTA2 HEROS教学视频教你分分钟做大人-昆卡
2014/06/11 DOTA
[55:45]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第一局
2016/02/28 DOTA
基于Python_脚本CGI、特点、应用、开发环境(详解)
2017/05/23 Python
Python编程实现微信企业号文本消息推送功能示例
2017/08/21 Python
python 实现在Excel末尾增加新行
2018/05/02 Python
python使用time、datetime返回工作日列表实例代码
2019/05/09 Python
opencv3/C++实现视频读取、视频写入
2019/12/11 Python
Python使用sqlite3模块内置数据库
2020/05/07 Python
Waterford加拿大官方网站:世界著名的水晶杯品牌
2016/11/01 全球购物
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
自我鉴定的范文
2013/10/03 职场文书
数据员岗位职责
2013/11/19 职场文书
信息工作经验交流材料
2014/05/28 职场文书
物价局领导班子四风问题整改措施
2014/10/26 职场文书
校园歌手大赛主持词
2015/07/03 职场文书
mybatis中sql语句CDATA标签的用法说明
2021/06/30 Java/Android
使用CSS连接数据库的方式
2022/02/28 HTML / CSS
世界无敌的ICOM IC-R9500宽频接收机
2022/03/25 无线电