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 相关文章推荐
利用文件属性结合Session实现在线人数统计
Oct 09 PHP
杏林同学录(六)
Oct 09 PHP
ubuntu 编译安装php 5.3.3+memcache的方法
Aug 05 PHP
微博短链接算法php版本实现代码
Sep 15 PHP
php获取淘宝分类id示例
Jan 16 PHP
destoon利用Rewrite规则设置网站安全
Jun 21 PHP
PHP中对各种加密算法、Hash算法的速度测试对比代码
Jul 08 PHP
php使用Session和文件统计在线人数
Jul 04 PHP
解决nginx不支持thinkphp中pathinfo的问题
Jul 21 PHP
深入浅析PHP7.0新特征(五大新特征)
Oct 29 PHP
PHP常用的三种设计模式
Feb 17 PHP
PDO::query讲解
Jan 29 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
《五等分的花嫁》漫画完结!2020年10月第2期TV动画制作组换血!
2020/03/06 日漫
PHP读取文件内容后清空文件示例代码
2014/03/18 PHP
PHP写日志的实现方法
2014/11/05 PHP
php使用APC实现实时上传进度条功能
2015/10/26 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
JavaScript控制listbox列表框的项目上下移动的方法
2015/03/18 Javascript
jQuery层次选择器用法示例
2016/09/09 Javascript
jQuery点击头像上传并预览图片
2017/02/23 Javascript
JavaScript数据结构之二叉树的查找算法示例
2017/04/13 Javascript
PHP自动加载autoload和命名空间的应用小结
2017/12/01 Javascript
JS计算距当前时间的时间差实例
2017/12/29 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
2018/02/26 Javascript
在NPM发布自己造的轮子的方法步骤
2019/03/09 Javascript
Vue使用axios出现options请求方法
2019/05/30 Javascript
微信小程序的开发范式BeautyWe.js入门详解
2019/07/10 Javascript
python生成器generator用法实例分析
2015/06/04 Python
梯度下降法介绍及利用Python实现的方法示例
2017/07/12 Python
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
Python对CSV、Excel、txt、dat文件的处理
2018/09/18 Python
Python 访问限制 private public的详细介绍
2018/10/16 Python
Python3 log10()函数简单用法
2019/02/19 Python
关于pandas的离散化,面元划分详解
2019/11/22 Python
Python日期格式和字符串格式相互转换的方法
2020/02/18 Python
美国男士内衣品牌:Tommy John
2017/12/22 全球购物
BNKR中国官网:带你感受澳洲领先潮流时尚
2018/08/21 全球购物
波兰购物网站:MALL.PL
2019/05/01 全球购物
阿里巴巴英国:Alibaba英国
2019/12/11 全球购物
opencv实现图像平移效果
2021/03/24 Python
3.15国际消费者权益日主题活动活动总结
2014/03/16 职场文书
七夕情人节促销方案
2014/06/07 职场文书
八荣八耻的活动方案
2014/08/16 职场文书
2014党员学习兰辉先进事迹思想汇报
2014/09/17 职场文书
2014年基层党支部工作总结
2014/12/04 职场文书
二审代理词范文
2015/05/25 职场文书
新人入职感言
2015/07/31 职场文书
高中信息技术教学反思
2016/02/16 职场文书