现在很多网站都需要上传生成缩略图,我前几天闲着没事,写了一个生成缩略图功能,在thinkphp的基础上写的,如果有需要此功能的朋友可以借鉴

首先新建一个controller 我叫TestAction ,内容如下

<?php
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  内容如下

 

<form id="upload" method='post' action="__URL__/upload/" enctype="multipart/form-data">
<table cellpadding=3 cellspacing=3 width="450PX">
<tr>
<td colspan="2">
<div style="background:#E9E9F3">上传允许文件类型:gif png jpg 图像文件,分别生产2张缩略图。并且把原图删掉</div>
</td>
</tr>
<tr>
<td></td>
<td>
<div ><input name="image" id="image" type="file" /></div>
<table id='tbl' style="clear:both"></table>
<input type="submit" value="提交" >
</td>
</tr>
<tr>
<td></td>

</tr>
</table>
</form>

 

然后下面是重头戏,在根目录下新建Common文件夹,里面新建一个Common.php,内容如下

 

<?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 ('上传图片失败!');
}
*/
}

?>