<body>
<volist name="filelist" id="vo">
小图:<img src="__PUBLIC__Img/s_{$vo['filename']}" /><br />
大图:<img src="__PUBLIC__Img/m_{$vo['filename']}" /><br />
</volist>
<form action="__URL__/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file[]" /><br />
<input type="file" name="file[]" /><br />
<input type="file" name="file[]" /><br />
<input type="submit" value="上传" />
</form>
</body>
</html>
==================================
<?php
/**
* 文件上传功能
* @author huyaping hypjj108@163.com
*/
class FileAction extends Action{
//初始化显示页面操作
public function index(){
//查询数据表16860_file表中上传文件数据信息
$file = M('file');
$list = $file->select();
$this->assign('filelist',$list);
$this->display();
}
//获取表单提交的数据操作
public function upload(){
//判断是否存在上传文件
if(empty($_FILES)){
//不存在,提示错误信息
$this->error('请选择需要上传的文件!');
}else{
//存在,调用与系统上传类操作的方法upload_todu()
$Info = $this->upload_todu();
//将上传文件数据写入到数据库中去
if(isset($Info)){
//调用与数据库模型完成的相关操作方法,成功返回true,失败返回false
if($this->M_todo($Info)){
$this->success('文件上传成功');
}else{
$this->error('文件数据写入数据库失败');
}
}
}
}
//完成与系统上传类相关操作
private function upload_todu(){
//导入系统UploadFile类文件
//import导入方法加@.ORG.Net.UploadFile表示导入当前项目下的类文件,没有则是导入系统自带的文件
import('ORG.Net.UploadFile');
//实例化UploadFile类
$upload = new UploadFile();
//设置文件上传的一些属性规范
$upload->maxSize = '200000'; //默认为-1,不限制大小
$upload->savePath = './Diy/Img/'; //上传文件保存的路径
$upload->saveRule = uniqid; //上传文件的保存规则,默认为uniqid函数
$upload->uploadReplace = true; //存在同名文件是否覆盖
$upload->allowExts = array('jpg','jpeg','gif','png'); //允许上传文件的后缀,使用数组设置,默认为空数组,表示不限制
$upload->allowTypes = array('image/jpg','image/jpeg','image/gif','image/png'); //允许上传文件类型,使用数组设置,默认为空数组,表示不限制
$upload->thumb = true; //是否对文件进行缩略图处理
$upload->thumbMaxWidth = '100,120'; //缩略图最大宽度,多个用逗号分割
$upload->thumbMaxHeight = '60,80'; //缩略图最大高度,多个用逗分割
$upload->thumbPrefix = 's_,m_'; //缩略图文件前缀,多个用逗号分隔
$upload->thumbPath = ''; //缩略图的保存路径,留空的话则去文件上传目录本身
$upload->thumbRemoveOrigin = true; //生成缩略图后是否删除原图
//调用UploadFile类中upload方法进行文件数据处理,成功返回上传的文件信息,错误返回false
if($upload->upload()){
//用UploadFile类中专门获取文件上传成功信息方法getUploadFileInfo()
$result = $upload->getUploadFileInfo();
return $result;
}else{
//调用UploadFile类中有专门对文件上传失败的错误信息提示方法getErrorMsg()
$this->error($upload->getErrorMsg());
}
}
//完成与数据库模型相关操作
private function M_todo($param){
//实例化模型
$file = M('file');
//针对单个文件或多个文件上传处理
for($i=0;$i<count($param);$i++){
//接受参数数据并进行处理
$data['filename'] = $param[$i]['savename'];
if(!$file->data($data)->add()){
//写入数据库失败则返回false
return false;
}
}
//for循环里数据全部写入成功,则返回true
return true;
}
}
?>