您好,欢迎访问一九零五行业门户网

转载-ThinkPHP文件上传类的分享_PHP教程

上传类使用org类库包中的net.updatefile类,最新版本的上传类包含的功能如下(有些功能需要结合thinkphp系统其他类库):
1.基本上传功能
2.支持批量上传
3.支持生成图片缩略图
4. 自定义参数上传
5.上传检测(包括大小、后缀和类型)
6.支持上传类型、附件大小、上传路径定义
7.支持哈希或者日期子目录保存上传文件
8.上传图片的安全性检测
9.支持上传文件命名规则
10. 支持对上传文件的hash验证
在thinkphp中使用上传功能无需进行特别处理。例如,下面是一个带有附件上传的表单提交:
 代码如下 复制代码
注意表单的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代码
 代码如下 复制代码
改为
xml/html代码
 代码如下 复制代码
或者
php代码
两种方式的多附件上传系统的文件上传类都可以自动识别。
http://www.bkjia.com/phpjc/444697.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/444697.htmltecharticle上传类使用org类库包中的net.updatefile类,最新版本的上传类包含的功能如下(有些功能需要结合thinkphp系统其他类库): 1.基本上传功能 2...
其它类似信息

推荐信息