现在很多网站都需要上传生成缩略图,我前几天闲着没事,写了一个生成缩略图功能,在thinkphp的基础上写的,如果有需要此功能的朋友可以借鉴
首先新建一个controller 我叫TestAction ,内容如下
class TestAction extends Action
{
public function up(){
$this->display();
}
public function upload() {
if(!empty($_FILES)) {
//如果有文件上传 上传附件
include_once "./Common/common.php";
$str = upload();
dump($str);
//$this->forward();
}
}
}
?>
up方法指向一个模板 Tpl\default\Test\up.html 内容如下
上传允许文件类型:gif png jpg 图像文件,分别生产2张缩略图。并且把原图删掉
| |
然后下面是重头戏,在根目录下新建Common文件夹,里面新建一个Common.php,内容如下
/**
*文件上传
* @param string $imgname form表单文件域的名字
* @param string $thumbPrefix 生成缩略图前缀名,可以生成多个,写法:m_,s_
* @param String $thumbMaxWidth 生成缩略图宽度,可以生成多个,写法:120,60
* @param String $thumbMaxHeight 生成缩略图高度,可以生成多个,写法:140,60
* @param String $updir 上传图片目录
*/
function upload($imgname,$updir='上传文件夹路径',$thumbPrefix='m_',$thumbMaxWidth='120',$thumbMaxHeight='140')
{
import("@.ORG.UploadFile");
$upload = new UploadFile();
//设置上传文件大小
$upload->maxSize = 3292200 ;
//设置上传文件类型
$upload->allowExts = explode(',','jpg,gif,png,jpeg');
//设置附件上传目录
$upload->savePath = $updir;
//设置需要生成缩略图,仅对图像文件有效
$upload->thumb = true;
//设置需要生成缩略图的文件后缀
$upload->thumbPrefix = $thumbPrefix; //生产2张缩略图
//设置缩略图最大宽度
$upload->thumbMaxWidth = $thumbMaxWidth;
//设置缩略图最大高度
$upload->thumbMaxHeight = $thumbMaxHeight;
//设置上传文件规则
$upload->saveRule = uniqid;
//删除原图
$upload->thumbRemoveOrigin = false;
if(!$upload->upload()) {
//捕获上传异常
$this->error($upload->getErrorMsg());
}else {
//取得成功上传的文件信息
$uploadList = $upload->getUploadFileInfo();
$_POST[$imgname] = $uploadList[0]['savename'];
}
//保存当前数据对象
$data=$_POST[$imgname] ;
return $data;
/*
$list=$model->add ($data);
if($list!==false){
$this->success ('上传图片成功!');
}else{
$this->error ('上传图片失败!');
}
*/
}
?>