




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ThinkPHP文件上传类的使用上传类使用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 = $info0savename; / 保存上传的照片 根据需要自行组装$User-add(); / 写入用户数据到数据库$this-success(“数据保存成功!”);复制代码首先是实例化上传类import(“ORG.Net.UploadFile”);$upload = new UploadFile(); / 实例化上传类复制代码实例化上传类之后,就可以设置一些上传的属性(参数),支持的属性有:maxSize: 文件上传的最大文件大小(以字节为单位)默认为-1 不限大小savePath:文件保存路径,如果留空会取UPLOAD_PATH常量定义的路径saveRule:上传文件的保存规则,必须是一个无需任何参数的函数名,例如可以是 time、 uniqid com_create_guid 等,但必须能保证生成的文件名是唯一的,默认是uniqidhashType:上传文件的哈希验证方法,默认是md5_fileautoCheck:是否自动检测附件,默认为自动检测uploadReplace:存在同名文件是否是覆盖allowExts:允许上传的文件后缀(留空为不限制),使用数组设置,默认为空数组allowTypes:允许上传的文件类型(留空为不限制),使用数组设置,默认为空数组thumb:是否需要对图片文件进行缩略图处理,默认为falsethumbMaxWidth:缩略图的最大宽度,多个使用逗号分隔thumbMaxHeight:缩略图的最大高度,多个使用逗号分隔thumbPrefix:缩略图的文件前缀,默认为thumb_ (如果你设置了多个缩略图大小的话,请在此设置多个前缀 )thumbSuffix:缩略图的文件后缀,默认为空 (如果你设置了多个缩略图大小的话,请在此设置多个后缀 )thumbPath:缩略图的保存路径,留空的话取文件上传目录本身thumbFile:指定缩略图的文件名thumbRemoveOrigin:生成缩略图后是否删除原图autoSub:是否使用子目录保存上传文件subType:子目录创建方式,默认为hash,可以设置为hash或者datedateFormat:子目录方式为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代码 两种方式的多附件上传系统的文件上传类都可以自动识别。上传概述上传类使用ORG类库包中的Net.UpdateFile类,ThinkPHP内置的Action操作里面(主要是insert和update操作,其他操作可以相应实现)实现了自动识别是否存在文件上传,如果存在会自动进行处理。而上传类要做的仅仅是文件上传的过程,其他功能需要依赖系统类库或者相应类库。系统对文件上传设置了很多灵活的参数以便进行更细致的控制。下面我们通过几 种常用的例子分别来描述下如何使用UploadFile类。目前ThinkPHP0.9.5版本的上传类包含的功能如下(有些功能需要结合 ThinkPHP系统其他类库):1、基本上传功能2、批量上传3、Ajax方式上传4、自动生成图片缩略图5、自定义参数上传基本上传功能基本上,在ThinkPHP中简单的上传功能无需进行特别处理,而全部有内置操作实现了。要做的仅仅是在表单中添加文件上传框和设置 enctype=multipart/form-data属性即可。当然,这和框架的架构和数据结构有关,因为ThinkPHP的上传数据表是单独 的,上传文件数据表中有两个关键的用于记录对应数据的字段:module和recordId,其实module也就是某个数据表,而recordId也就 是该数据表对应的数据ID。在其他任何需要上传的数据表中可以方便地查询到属于自己的附件列表,就是采用这种机制和结构,令得ThinkPHP的上传变得 简化了。下面就是实现代码: INPUT TYPE=text NAME=email INPUT TYPE=submit value=保 存 复制代码上面的表单,在保存用户数据的同时包括了一个照片文件上传,使用普通方式提交到后台后,系统自动会把用户数据保存在用户数据表中,而把上传的文件保存到附件数据表,并记录了对应的用户数据表的名称和编号。下次取得数据的时候,使用下面的方式获取属于该记录的附件列表:/读取附件信息$attachDao = D(AttachDao);$attachs = $attachDao-findAll(module=User and recordId=$id);/模板变量赋值$this-assign(attach,$attachs);复制代码批量上传ThinkPHP上传类支持多文件上传,而这些仅仅是在客户端增加多个文件上传框而已,后台会自动获取所有的文件上传,并一一进行上传和保存数据操作,并且过滤无效的上传。批量上传的一个例子:假设用户往自己的图片库里面添加多个图片 INPUT TYPE=file name=photo2 INPUT TYPE=submit value=上传图片 复制代码需要注意,UploadFile上传类对多文件上传并不是采用方式,注意区别两种方式的不同。上传文件的个数并无限制,ThinkPHP管理后台还实现了一个动态增加文件上传的功能。通过该方式可以方便地进行多文件批量上传。Ajax文件上传通过简单的参数设置就可以把文件上传改装成AJAX方式(Iframe实现方式),而你要做的仅仅是添加下面代码:复制代码_uploadFormId用于设置上传表单id,用于在上传成功后重置表单,避免重复上传。在_uploadFileResult变量中设置返回提示的 层id,在_uploadResponse参数中设置文件上传返回数据的处理方法。该方法返回两个参数:id和name,如果有多文件上传,使用逗号分割 多个返回值。ThinkPHP框架的Action类中的ajaxUploadResult方法对Ajax文件上传的信息返回提供支持。例如,第一个例子上传后希望更新照片,使用下面的方法定义:function uploadComplete(id,name) $(photo).innerHTML = ;复制代码下面的示例是AJAX文件上传的实现画面,左边图片会上传成功后自动更新。自动生成缩略图如果希望在上传过程自动为图片文件生成缩略图,ThinkPHP的UploadFile类也可以轻松实现,而且不需要你多特殊添加缩略图处理代码。要做的也仅仅是在客户端添加如下参数:/ 设置是否需要生成图片缩略图,仅对图片上传有效 / 生成缩略图的最大宽度 / 生成缩略图的最大高度复制代码设置后系统在上传后会自动生成相同格式的缩略图。系统默认的缩略图路径是上传文件所在目录,并且在文件中后面添加_thumb以标识缩略图文件。缩略图路径可以在项目配置文件中配置。生成多缩略图ThinkPHP支持对上传的图片生成多缩略图,TOPThink社区的头像功能就是多缩略图功能的例子,使用起来也非常简单。下面的代码是TOPThink社区上传头像的部分缩略图代码:复制代码上面的例子表示生成三个大小的缩略图,并规定了缩略图文件名后面添加的后缀,和三种缩略图的宽高尺寸。更多上传设置ThinkPHP在Action来中还提供了和UploadFile类的上传设置接口,方便在客户端进行更多的参数设置进行上传控制。下面列举下主要的参数,更多的参数可以参考框架的Action类中的_upload方法。/ 设置覆盖方式上传 / 设置允许上传文件类型 / 上传文件保存目录,要注意设置可写权限 / 上传文件名命名规则,支持函数,例如time uniqid com_create_guid 系统默认设置为uniqid保证上传文件名不会重复,如果不存在设置函数,则使用规则字符串作为上传文件名 / 设置上传文件大小 / 设置上传数据表,默认的上传数据记录在当前模块表中 / 设置上传文件对应的数据编号,通常不用设置,除非特别需要 / 设置上传用户id,通常不用设置,系统自动获取当前登录用户编号复制代码ThinkPHP内置了一个文件上传类,位于ORG类库 包中的Net.UpdateFile类。最新版本的上传类包含的功能如下:批量上传、自动生成图片缩略图、上传检测、 支持覆盖方式上传、 支持上传类型、附件大小、上传路径定义、 支持上传文件命名规则、支持对上传文件的Hash规则、根据日期或者哈希自动创建子目录。属性UploadFile类有很多有用的属性,可以非常灵活的进行设置。maxSize 上传文件的最大值allowExts 允许上传的文件后缀(使用数组定义)留空为不作检查allowTypes 允许上传的文件类型(使用数组定义)留空为不作检查thumb 是否对上传图片进行缩略图处理thumbPath 缩略图保存路径thumbMaxWidth 缩略图最大宽度thumbMaxHeight 缩略图最大高度thumbPrefix 缩略图命名前缀thumbSuffix 缩略图命名后缀 默认为 _thumbautoSub 是否启用子目录保存subType 子目录创建方式 目前可以支持hash和datedateFormat 日期格式的上传子目录创建格式 当subType=date 时有效 默认值YmdsavePath 上传文件的保存路径autoCheck 是否自动检查上传文件uploadReplace 存在同名文件是否覆盖saveRule 上传文件命名规则 留空则使用原来文件名保存hashType 上传文件的哈希类型方法UploadFile类upload($savePath=) 上传操作方法getUploadFileInfo() 获取上传成功的文件信息getErrorMsg() 获取最近一次的错误信息PHP代码import( ORG.Net.UploadFile ); $upl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 样貌特征测试题及答案
- 北京知识产权师培训班课件
- 2025年第一季度护理管理制度考核试题考题答案
- 营养专科护士培训考试题及答案
- 医院传染病防控知识培训考核试题(附答案)
- 护理导论知识练习测试题(含答案)
- 2024年上海市浦东新区高桥镇新益村社区工作人员考试模拟试题及答案
- 北京房屋测绘培训课件
- 2025年注册会计师重点试题带答案
- 标日课件第九课
- 2025年云南高考地理试题解读及答案详解讲评课件
- 江苏清泉化学股份有限公司年产4000吨呋喃、1000吨四氢呋喃丙烷、3000吨四氢呋喃技改项目环评资料环境影响
- 新型医药销售外包(CSO)行业跨境出海项目商业计划书
- 口腔诊室6S管理
- 2025-2030年中国外墙外保温系统行业市场现状供需分析及投资评估规划分析研究报告
- 文印员考试题库及答案
- 安全总监考试试题及答案
- XX学校(幼儿园)食堂管理各岗位廉政(廉洁)风险点及防控措施一览表
- 钢结构钢爬梯包工包料合同范本
- 家庭房屋财产协议书
- 陶行知生活即教育教师读书分享
评论
0/150
提交评论