上传类使用ORG类库包中的Net.UpdateFile类,最新版本的上传类包含的功能如下(有些功能需要结合ThinkPHP系统其他类库):

1.基本上传功能

2.支持批量上传

3.支持生成图片缩略图

4. 自定义参数上传

5.上传检测(包括大小、后缀和类型)

6.支持上传类型、附件大小、上传路径定义

7.支持哈希或者日期子目录保存上传文件

8.上传图片的安全性检测

9.支持上传文件命名规则

10. 支持对上传文件的Hash验证

在ThinkPHP中使用上传功能无需进行特别处理。例如,下面是一个带有附件上传的表单提交:

<form METHOD=POST action=“/Manual/upload” enctype=“multipart/form-data” > 
<input type=“text” NAME=“name” > 
<input type=“text” NAME=“email” > 
<input type=“file” name=“photo” > 
<input type=“submit” value=“保 存” > 
</form>

复制代码

注意表单的Form标签中一定要添加 enctype=”multipart/form-data” 文件才能上传。因为表单提交到当前模块的upload操作方法,所以我们在模块类里面添加下面的upload方法即可:

Public function upload(){ 
import(“ORG.Net.UploadFile”); 
$upload = new UploadFile(); // 实例化上传类 
$upload->maxSize = 3145728 ; // 设置附件上传大小 
$upload->allowExts = array(‘jpg’, ‘gif’, ‘png’, ‘jpeg’); // 设置附件上传类型 
$upload->savePath = ‘./Public/Uploads/’; // 设置附件上传目录 
if(!$upload->upload()) { // 上传错误 提示错误信息 
$this->error($upload->getErrorMsg()); 
}else{ // 上传成功 获取上传文件信息 
$info = $upload->getUploadFileInfo(); 

// 保存表单数据 包括附件数据 
$User = M(“User”); // 实例化User对象 
$User->create(); // 创建数据对象 
$User->photo = $info[0]["savename"]; // 保存上传的照片 根据需要自行组装 
$User->add(); // 写入用户数据到数据库 
$this->success(“数据保存成功!”); 
}

复制代码

首先是实例化上传类

import(“ORG.Net.UploadFile”); 
$upload = new UploadFile(); // 实例化上传类

复制代码

实例化上传类之后,就可以设置一些上传的属性(参数),支持的属性有:

maxSize: 文件上传的最大文件大小(以字节为单位)默认为-1 不限大小

savePath:文件保存路径,如果留空会取UPLOAD_PATH常量定义的路径

saveRule:上传文件的保存规则,必须是一个无需任何参数的函数名,例如可以是 time、 uniqid com_create_guid 等,但必须能保证生成的文件名是唯一的,默认是uniqid

hashType:上传文件的哈希验证方法,默认是md5_file

autoCheck:是否自动检测附件,默认为自动检测

uploadReplace:存在同名文件是否是覆盖

allowExts:允许上传的文件后缀(留空为不限制),使用数组设置,默认为空数组

allowTypes:允许上传的文件类型(留空为不限制),使用数组设置,默认为空数组

thumb:是否需要对图片文件进行缩略图处理,默认为false

thumbMaxWidth:缩略图的最大宽度,多个使用逗号分隔

thumbMaxHeight:缩略图的最大高度,多个使用逗号分隔

thumbPrefix:缩略图的文件前缀,默认为thumb_   (如果你设置了多个缩略图大小的话,请在此设置多个前缀 )

thumbSuffix:缩略图的文件后缀,默认为空   (如果你设置了多个缩略图大小的话,请在此设置多个后缀 )

thumbPath:缩略图的保存路径,留空的话取文件上传目录本身

thumbFile:指定缩略图的文件名

thumbRemoveOrigin:生成缩略图后是否删除原图

autoSub:是否使用子目录保存上传文件

subType:子目录创建方式,默认为hash,可以设置为hash或者date

dateFormat:子目录方式为date的时候指定日期格式

hashLevel:子目录保存的层次,默认为一层

以上属性都可以直接设置,例如:

$upload->thumb = true 
$upload->thumbMaxWidth = “50,200″ 
$upload->thumbMaxHeight = “50,200″

复制代码

其中生成缩略图功能需要Image类的支持。

设置好上传的参数后,就可以调用 UploadFile类的upload方法进行附件上传,如果失败,返回false,并且用getErrorMsg方法获取错误提示信息;如果上传成功, 可以通过调用getUploadFileInfo方法获取成功上传的附件信息列表。因此getUploadFileInfo方法的返回值是一个数组,其中 的每个元素就是上传的附件信息。每个附件信息又是一个记录了下面信息的数组,包括:

key:附件上传的表单名称

savepath:上传文件的保存路径

name:上传文件的原始名称

savename:上传文件的保存名称

size:上传文件的大小

type:上传文件的MIME类型

extension:上传文件的后缀类型

hash:上传文件的哈希验证字符串

文件上传成功后,就可以通过这些附件信息来进行其他的数据存取操作,例如保存到当前数据表或者单独的附件数据表都可以。

如果需要使用多个文件上传,只需要修改表单,把

XML/HTML代码
<input
type=“file”
name=“photo”
>

改为

XML/HTML代码
<input
type=“file”
name=“photo1″
>
<input
type=“file”
name=“photo2″
>
<input
type=“file”
name=“photo3″
>

或者

PHP代码
<input type=“file”  name=“photo[]“ >    <input type=“file”  name=“photo[]“ >    <input type=“file”  name=“photo[]“ >

两种方式的多附件上传系统的文件上传类都可以自动识别。

转载于:https://www.cnblogs.com/iplus/archive/2011/09/29/4490058.html

ThinkPHP文件上传类的使用相关推荐

  1. 实例讲解ThinkPHP的UploadFile文件上传类的详细用法

    ThinkPHP文件上传自带了上传类,使用起来非常方便,我们将以一个文件上传实例来讲解ThinkPHP上传类的实际用法,上传类使用时有详细的中文注释,可以非常方便的告诉你类的一些方法或变量的使用方法. ...

  2. php 上传 类 代码,php 文件上传类代码

    /** * 文件上传类 */ class uploadFile { public $max_size = '1000000';//设置上传文件大小 public $file_name = 'date' ...

  3. fileupload.class.php,php文件上传类

    php文件上传类 FileUpload.class.php class FileUpload { private $filepath;     //指定上传文件保存的路径 private $allow ...

  4. php 文件上传页面模板,PHP文件上传类实例详解

    本文实例讲述了PHP文件上传类.分享给大家供大家参考,具体如下: 这里演示了FileUpload.class.php文件上传类,其中用到了两个常量,可在网站配置文件中定义: define('ROOT_ ...

  5. PHP文件上传类及其使用实例教程

    这个例子主要介绍了一个比较通用的文件上传类.当我们实例化这个类的时候可以指定上传路径和允许上传的文件类型. 本例包含两个文件 upload.class.php test.php 上传类中的属性和方法列 ...

  6. PHP文件系统-文件上传类

    一.文件上传类的说明(这是一个可以处理单个文件上传和多个文件上传的处理类) 1.构造函数初始化的作用是分配存储空间和传递需要设定的参数 2.一个类的资源是有所有的定义变量的,不管是共有.私有的变量 二 ...

  7. php 上传类 缩略图,php图片文件上传类 (附自动生成缩略图) | 学步园

    /** 作 者:冻结回忆 (linghunts@163.com); 功 能:文件上传类 支持文件夹自动分组保存(2008-01/09); 时 间:2007-10-17; 创建类:参数(文件域,文件原名 ...

  8. php.ini maxfileuploads,细说PHP高洛峰文件上传类源文件

    以下是兄弟连php视频教程中高洛峰老师所教授的文件上传类的源代码,尚没有完全理解精髓,在这里记录一下,供日后有需要时查看: $value){ $key=strtolower($key); if(!in ...

  9. 超级好用的php文件上传类(上传、缩略图、水印)

    <? /** * 文件上传类 */ class uploadFile {public $max_size='1000000'; //设置上传文件大小public $file_name='date ...

最新文章

  1. 利用Bash给Linux服务器增添色彩
  2. 字符串匹配的sunday算法
  3. 大学士带你领略“大院大所”黑科技!
  4. RabbitMQ使用手册
  5. centos安装Python2.7
  6. java that关键字_Java中this关键字的几种用法
  7. Linux的 ACL策略的作用
  8. 卸载centos7自带mysql_centos7完全卸载mysql
  9. Quartus ii 13.1错误合集,持续更新
  10. 黑苹果白果序列号_黑苹果从入门到放弃黑苹果:OC配置入门
  11. 《xUnit Test Patterns》学习笔记2 - Goal Of Test Automation
  12. 【PostgreSQL-9.6.3】数据表操作语句
  13. ios旧版本app网站_这两款app已解锁永久订阅版!
  14. javascript数据结构与算法--散列
  15. vs 2005應用2003框架
  16. 多线程之生产者与消费者问题
  17. 我的世界贝爷生存用什么Java_我的世界贝爷生存MOD教程 [MITE] MC实在是太简单了教程详解 | 我的世界 | MC世界侠...
  18. Python爬虫之Spider类用法简单介绍
  19. 画出spi输出bdh数据总线时序图_单片机张毅刚课后习题答案.docx
  20. SpringMVC与JSON传值,取值,使用SpringMVC实现文件的上传与下载,SpringMVC拦截器

热门文章

  1. SQL2005 游标学习
  2. 英国野生生物摄影奖之一个地球奖
  3. excel合并多个工作表_多个Excel工作表合并到一个工作簿
  4. App Store新规即将到来 你准备好了吗?
  5. 简单使用SimpleCursorAdapter
  6. 网游Server端开发基础
  7. C#多线程学习(三) 生产者和消费者 1——解决线程间冲突的关键
  8. springboot yml多环境开发
  9. js接收php 回调,JS callback回调函数的使用(附代码)
  10. 迷宫问题python实现