关于php thinkphp多图封装的实用函数,贴出来,请指教

这几天在做网站的多图修改与上传, 单图的修改和上传,  所以封装了几个类 希望指正:

这个是针对thinkphp3.2.3 的.

/**
* 上传图片封装
* @param str $imgname 图片参数名字
* @param str $dirname 图片要存放的目录
* @param arr $thumb 是否生成缩略图 默认不生成, 第一个元素为宽,第二个为高
* @return arr 返回一个数组 data[ok]==1 证明成功 
*/
function uploadimg($imgname, $dirname,$thumb=array()){

	if(isset($_FILES[$imgname]) && $_FILES[$imgname]['error'] == 0){
		//上传参数
		
		$upload = new \Think\Upload(C('IMG_ATTRIBUTE'));
		$upload->savePath = $dirname . '/';
		$info = $upload->uploadOne($_FILES[$imgname]);
		if(!$info){
			//先把上传失败原因赋给模型
			return array(
				'ok'=> 0,
				'error'=> $upload->getError(),
				);
			//返回控制器
			return false;
		}else{
			$data['ok'] = 1;
			// $info = $info[$imgname];
			$data['img'][0] = $info['savepath'].$info['savename'];	
			// echo $data['img'][0];exit;		
			//判断是否生成缩略图
			if(!empty($thumb) && is_array($thumb) ){
				$infopath = $upload->rootPath.$data['img'][0];
				// print_f($infopath);
				$image = new \Think\Image(); 
				$image->open($infopath);
				// 按照原图的比例生成一个最大为150*150的缩略图并保存为thumb.jpg
				$image->thumb($thumb[0], $thumb[1])->save($upload->rootPath.$info['savepath'].'smller_'.$info['savename']);
				$data['img'][1] = $info['savepath'].'smller_'.$info['savename'];
				
			}
			return $data;
		}
		
	}
}
/**
 * 多图上传
 * @param str $imgname input name 的名字
 * @param str $dirname 上传目录的名字
 * @param arr $thumb 是否生成缩略图 默认不生成, 如果要生成, 数组里第2个参数, 第一个为高 第二个为宽
 */

//多图上传专用
function uploadimgs($imgname, $dirname,$thumb=array()){

	if(isset($_FILES[$imgname])){
			//上传参数
		
		$upload = new \Think\Upload(C('IMG_ATTRIBUTE'));
		$upload->savePath = $dirname . '/';
		$info = $upload->upload(array($_FILES[$imgname]));
		if(!$info){
			//先把上传失败原因赋给模型
			return array(
				'ok'=> 0,
				'error'=> $upload->getError(),
				);
			
			//返回控制器
			return false;
		}else{

			$data['ok'] = 1;

			foreach ($info as $key => $value) {

				$data['img'][] = $value['savepath'].$value['savename'];
			}
						
			//判断是否生成缩略图
			if(!empty($thumb) && is_array($thumb) ){
				$infopath = $upload->rootPath.$data['img'][0];
				// print_f($infopath);
				$image = new \Think\Image(); 
				$image->open($infopath);
				// 按照原图的比例生成一个最大为150*150的缩略图并保存为thumb.jpg
				$image->thumb($thumb[0], $thumb[1])->save($upload->rootPath.$info['savepath'].'smller_'.$info['savename']);
				$data['img'][1] = $info['savepath'].'smller_'.$info['savename'];
				
			}
			return $data;
		}
		
	}

}

/**
 * 文件多图片的修改 针对多图,可选择数据库
 * @author 赵大人 <243356121@qq.com>
 * @param str $imgname 图片input file 的名字 
 * @param str $dirname 图片上传目录的名字
 * @param str $table 图片操作的数据库名字
 * @param str $id 图片的id 数据库里面的主键id
 * @param str $key 图片的下标,上传图片的顺序,意思就是第几张图片
 *
 */

//多图修改
function updateimgs($imgname,$dirname,$table,$id,$key){

	if(isset($_FILES[$imgname]['tmp_name'][$key]) && $_FILES[$imgname]['error'][$key] == 0){
		//先根据商品id取出商品图片所在位置
		$db = M($table);
		$img = $db->find($id);
		// print_r($img);exit;
		//拼接图片路径
		$path = C('IMG_ATTRIBUTE')['rootPath'];
		//先删除缩略图
		// $simg = str_replace('/', '/smller_', $img['img']);
		// unlink($path.$img['thumb']);
		unlink($path.$img[$imgname]);

		//上传参数
		//妈的 提取下标为当前下标的图片
		foreach ($_FILES[$imgname] as $k => $value) {
			$newfile[$k] = $value[$key];
		}
		// print_r($newfile);exit;
		$upload = new \Think\Upload(C('IMG_ATTRIBUTE'));
		$upload->savePath = $dirname . '/';
		$info = $upload->uploadOne($newfile);
		if(!$info){
			//先把上传失败原因赋给模型
			// echo '上传失败?';exit;
			$db->error = $upload->getError();
			//返回控制器
			return false;
		}else{
			$data['ok'] = 1;
			$data['img'] = $info['savepath'].$info['savename'];				
		}
		
	}
	return $data;
}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值