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高级编程-函数-郑阿奇
Jul 04 PHP
深入解析Session是否必须依赖Cookie
Aug 02 PHP
php阻止页面后退的方法分享
Feb 17 PHP
PHP中使用smarty生成静态文件的例子
Apr 24 PHP
php链表用法实例分析
Jul 09 PHP
Zend Framework分页类用法详解
Mar 22 PHP
PHP中header函数的用法及其注意事项详解
Jun 13 PHP
php中简单的对称加密算法实现
Jan 05 PHP
thinkphp自定义权限管理之名称判断方法
Apr 01 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
Feb 07 PHP
laravel 模型查询按照whereIn排序的示例
Oct 16 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投票程序源码
2007/03/11 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
2015/07/08 PHP
php实现购物车功能(下)
2016/01/05 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
PHP迭代器和迭代的实现与使用方法分析
2018/04/19 PHP
laravel 框架配置404等异常页面
2019/01/07 PHP
jquery 表单下所有元素的隐藏
2009/07/25 Javascript
javascript写的一个链表实现代码
2009/10/25 Javascript
奉献给JavaScript初学者的编写开发的七个细节
2011/01/11 Javascript
用js调用迅雷下载代码的二种方法
2013/04/15 Javascript
jquery中ajax函数执行顺序问题之如何设置同步
2014/02/28 Javascript
跟我学Node.js(四)---Node.js的模块载入方式与机制
2014/06/04 Javascript
node+experss实现爬取电影天堂爬虫
2016/11/20 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
angularjs实现首页轮播图效果
2017/04/14 Javascript
关于JavaScript中forEach和each用法浅析
2017/07/27 Javascript
详解用函数式编程对JavaScript进行断舍离
2017/09/18 Javascript
微信小程序报错:this.setData is not a function的解决办法
2017/09/27 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
浅谈Vue Element中Select下拉框选取值的问题
2018/03/01 Javascript
Vue 实现前端权限控制的示例代码
2019/07/09 Javascript
解决layer弹出层的内容页点击按钮跳转到新的页面问题
2019/09/14 Javascript
微信小程序实现禁止分享代码实例
2019/10/19 Javascript
javscript 数组扁平化的实现
2020/02/03 Javascript
Vue中component标签解决项目组件化操作
2020/09/04 Javascript
[52:08]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第一局
2016/03/05 DOTA
利用python生成照片墙的示例代码
2020/04/09 Python
宝拉珍选英国官网:Paula’s Choice英国
2019/05/29 全球购物
远程培训的心得体会
2014/09/01 职场文书
国际政治学专业推荐信
2014/09/26 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
学生逃课万能检讨书2000字
2015/02/17 职场文书
党员承诺书格式范文
2015/04/28 职场文书
聊聊Python中关于a=[[]]*3的反思
2021/06/02 Python
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏