ThinkPHP文件上传类的使用,ThinkPHP文件上传类的分享编程

ORG의 Net.UpdateFile

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

 

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

1.基本上传功能

[ 속성 ]
maxSize 최고크기
allowExts 
allowTypes 사용가능한 파일
thumb 是否对上传图片进行缩略图处理
thumbPath 缩略图保存路径
thumbMaxWidth 缩略图最大宽度
thumbMaxHeight 缩略图最大高度
thumbPrefix 缩略图命名前缀
thumbSuffix 缩略图命名后缀 默认为 _thumb
autoSub 是否启用子目录保存
subType 子目录创建方式 目前可以支持hash和date
dateFormat 日期格式的上传子目录创建格式 当subType=date 时有效
默认值Ymd
savePath 上传文件的保存路径
autoCheck 是否自动检查上传文件
uploadReplace 存在同名文件是否覆盖
saveRule 上传文件命名规则 留空则使用原来文件名保存
hashType 上传文件的哈希类型

1.基本上传功能

2.支持批量上传

[ method ]
upload($savePath=”)  
getUploadFileInfo() 
getErrorMsg() 

2.支持批量上传

3.支持生成图片缩略图

PHP코드

3.支持生成图片缩略图

  1. 自定义参数上传
import( "ORG.Net.UploadFile" );    $upload  =  new  UploadFile();    //파일크기  $upload ->maxSize  = 32922 ;    //파일류형  $upload ->allowExts  =  explode ( ',' , 'doc,rar,txt' );    //파일저장path  $upload ->savePath =   '../Public/Uploads/' ;     //upload  if (! $upload ->upload()) {        //오류catch      $this ->error( $upload ->getErrorMsg());                   } else {         $this ->success( '저장완성!' );    } 
  1. 自定义参数上传

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


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

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

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

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

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

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

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

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

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

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

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

在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 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方法即可:

注意表单的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(“数据保存成功!”); 
}

 代码如下

复制代码

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(); // 实例化上传类

首先是实例化上传类

复制代码

 代码如下

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

thumbFile:指定缩略图的文件名

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

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

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

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

thumbFile:指定缩略图的文件名

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

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

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

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

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

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

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

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

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

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

复制代码

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

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

 代码如下

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

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

key:附件上传的表单名称

 

savepath:上传文件的保存路径

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

name:上传文件的原始名称

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

savename:上传文件的保存名称

key:附件上传的表单名称

size:上传文件的大小

savepath:上传文件的保存路径

type:上传文件的MIME类型

name:上传文件的原始名称

extension:上传文件的后缀类型

savename:上传文件的保存名称

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

size:上传文件的大小

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

type:上传文件的MIME类型

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

extension:上传文件的后缀类型

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

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

改为

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

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

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

或者

XML/HTML代码

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

 代码如下

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

<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[]“ >

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