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调用三种数据库的方法(1)
Oct 09 PHP
php Hex RGB颜色值互换的使用
May 10 PHP
fckeditor上传文件按日期存放及重命名方法
May 22 PHP
PHP使用Pthread实现的多线程操作实例
Nov 14 PHP
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
Dec 25 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
Sep 21 PHP
yii2实现分页,带搜索的分页功能示例
Jan 07 PHP
php 数组元素快速去重
May 05 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 PHP
php实现支持中文的文件下载功能示例
Aug 30 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 PHP
php实现商城购物车的思路和源码分析
Jul 23 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
Cannot modify header information错误解决方法
2008/10/08 PHP
php随机抽奖实例分析
2015/03/04 PHP
PHP实现的微信公众号扫码模拟登录功能示例
2019/05/30 PHP
漂亮的提示信息(带箭头)
2007/03/21 Javascript
js字符串转换成xml对象并使用技巧解读
2013/04/18 Javascript
基于JavaScript 声明全局变量的三种方式详解
2013/05/07 Javascript
利用vscode编写vue的简单配置详解
2017/06/17 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
vue动态绑定class选中当前列表变色的方法示例
2018/12/19 Javascript
如何使用CSS3+JQuery实现悬浮墙式菜单
2019/06/18 jQuery
vue+axios实现post文件下载
2019/09/25 Javascript
vue 实现v-for循环回来的数据动态绑定id
2019/11/07 Javascript
js DOM的事件常见操作实例详解
2019/12/16 Javascript
Vue中inheritAttrs的使用实例详解
2020/12/31 Vue.js
python实现udp数据报传输的方法
2014/09/26 Python
Python导出DBF文件到Excel的方法
2015/07/25 Python
你眼中的Python大牛 应该都有这份书单
2017/10/31 Python
Python实现加载及解析properties配置文件的方法
2018/03/29 Python
python基础教程项目三之万能的XML
2018/04/02 Python
python实现对文件中图片生成带标签的txt文件方法
2018/04/27 Python
浅析python标准库中的glob
2020/03/13 Python
python logging通过json文件配置的步骤
2020/04/27 Python
Python日志:自定义输出字段 json格式输出方式
2020/04/27 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
2021/01/22 Python
HTML5中微数据概述及在搜索引擎中的使用举例
2013/02/07 HTML / CSS
MyFrenchPharma中文网:最大的法国药妆平台
2016/10/07 全球购物
JD Sports意大利:英国篮球和运动时尚的领导者
2017/10/29 全球购物
Timberland澳大利亚官网:全球领先的户外品牌
2019/12/10 全球购物
荣耀俄罗斯官网:HONOR俄罗斯
2020/10/31 全球购物
艺术设计专业个人求职信
2014/04/10 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书
5行Python代码实现一键批量扣图
2021/06/29 Python
详解CSS中的特指度和层叠问题
2021/07/15 HTML / CSS
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android
Z-Order加速Hudi大规模数据集方案分析
2022/03/31 Servers
服务器SVN搭建图文安装过程
2022/06/21 Servers