您的位置:首页 > 编程语言 > PHP开发

THINKPHP 上传类的使用方法上传概述

2011-07-29 16:53 399 查看
上传类使用ORG类库包中的Net.UpdateFile类,ThinkPHP内置的Action操作里面(主要是insert和update操作,其他操作可以相应实现)实现了自动识别是否存在文件上传,如果存在会自动进行处理。
而上传类要做的仅仅是文件上传的过程,其他功能需要依赖系统类库或者相应类库。系统对文件上传设置了很多灵活的参数以便进行更细致的控制。下面我们通过几 种常用的例子分别来描述下如何使用UploadFile类。目前ThinkPHP0.9.5版本的上传类包含的功能如下(有些功能需要结合 ThinkPHP系统其他类库):
1、基本上传功能
2、批量上传
3、Ajax方式上传
4、自动生成图片缩略图
5、自定义参数上传

基本上传功能
基本上,在ThinkPHPHigh quality Sunglasses 中简单的上传功能无需进行特别处理,而全部有内置操作实现了。要做的仅仅是在表单中添加文件上传框和设置 enctype="multipart/form-data"属性即可。当然,这和框架的架构和数据结构有关,因为ThinkPHP的上传数据表是单独 的,上传文件数据表中有两个关键的用于记录对应数据的字段:module和recordId,其实module也就是某个数据表,而recordId也就 是该数据表对应的数据ID。在其他任何需要上传的数据表中可以方便地查询到属于自己的附件列表,就是采用这种机制和结构,令得ThinkPHP的上传变得 简化了。
下面就是实现代码:

<form METHOD=POST action="__URL__/action/" enctype="multipart/form-data" >
<INPUT TYPE="text" NAME="name" > INPUT TYPE="text" NAME="email" >
<INPUT TYPE="file" name="photo" > INPUT TYPE="submit" value="保 存" >

//Sunglasses manufacturer

</form>

复制代码

上面的表单,在保存用户数据的同时包括了一个照片文件上传,使用普通方式提交到后台后,系统自动会把用户数据保存在用户数据表中,而把上传的文件保存到附件数据表,并记录了对应的用户数据表的名称和编号。下次取得数据的时候,使用下面的方式获取属于该记录的附件列表:

//读取附件信息
$attachDao = D('AttachDao');
$attachs = $attachDao->findAll("module='User' and recordId='$id'");
//模板变量赋值Sunglasses Distributor
$this->assign("attach",$attachs);

复制代码

批量上传
ThinkPHP上传类支持多文件上传,而这些仅仅是在客户端增加多个文件上传框而已,后台会自动获取所有的文件上传,并一一进行上传和保存数据操作,并且过滤无效的上传。批量上传的一个例子:
假设用户往自己的图片库里面添加多个图片

<form METHOD=POST action="__URL__/action/" enctype="multipart/form-data" >
<INPUT TYPE="file" name="photo1" > INPUT TYPE="file" name="photo2" >
<INPUT TYPE="file" name="photo3" > INPUT TYPE="submit" value="上传图片" >
</form>Best price sunglasses

复制代码

需要注意,UploadFile上传类对多文件上传并不是采用
<INPUT TYPE="file" name="photo[]" >
方式,注意区别两种方式的不同。
上传文件的个数并无限制,ThinkPHP管理后台还实现了一个动态增加文件上传的功能。通过该方式可以方便地进行多文件批量上传。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: