事情是这样的 ,我使用TP框架要上传商品图片 已经写好了代码测试可以使用,但是后来看老师的视频说让封装成一个函数,函数已经给我了,让我自己调用就行。
下面是已经能正常运行的代码
[PHP] 纯文本查看 复制代码 $upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 1024*1024 ;// 设置附件上传大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
$upload->rootPath = './Public/Uploads/'; // 设置附件上传根目录
$upload->savePath = 'Goods/'; // 设置附件上传(子)目录
// 上传文件
$info = $upload->upload();
if(!$info) {// 上传错误提示错误信息
//获取失败原因并保存到模型error属性中 然后在控制器中调用$model->getErrot()方法打印出错误信息
$this->error = $upload->getError();
return false;
}else{
/****************生成缩略图*******************/
//获得图片的路径信息
$logo_path = $info['logo']['savepath'].$info['logo']['savename'];
$image = new \Think\Image();
$image->open('./Public/Uploads/'.$logo_path);
//拼接图片名称
$mbiglogo = $info['logo']['savepath'].'mbig_'.$info['logo']['savename'];
$biglogo = $info['logo']['savepath'].'big_'.$info['logo']['savename'];
$midlogo = $info['logo']['savepath'].'mid_'.$info['logo']['savename'];
$smlogo = $info['logo']['savepath'].'sm_'.$info['logo']['savename'];
//$logo = '/Public/Uploads/'.'logo_'.$info['logo']['savepath'].$info['logo']['savename'];
$image->thumb(50, 50)->save('./Public/Uploads/'.$smlogo);
$image->thumb(130, 130)->save('./Public/Uploads/'.$midlogo);
$image->thumb(350, 350)->save('./Public/Uploads/'.$biglogo);
$image->thumb(700, 700)->save('./Public/Uploads/'.$mbiglogo);
//$this->success('上传成功!');
//把路径放到表单中
$date['logo'] = $logo_path;
$date['sm_logo'] = $smlogo;
$date['mid_logo'] = $midlogo;
$date['big_logo'] = $biglogo;
$date['mbig_logo'] = $mbiglogo;
}
这段代码可以正常运行 下面是老师的函数代码
[PHP] 纯文本查看 复制代码 /**
* 上传图片并生成缩略图
* 用法:
* $ret = uploadOne('logo', 'Goods', array(
array(600, 600),
array(300, 300),
array(100, 100),
));
返回值:
if($ret['ok'] == 1)
{
$ret['images'][0]; // 原图地址
$ret['images'][1]; // 第一个缩略图地址
$ret['images'][2]; // 第二个缩略图地址
$ret['images'][3]; // 第三个缩略图地址
}
else
{
$this->error = $ret['error'];
return FALSE;
}
*
*/
function uploadOne($imgName, $dirName, $thumb = array())
{
// 上传LOGO
if(isset($_FILES[$imgName]) && $_FILES[$imgName]['error'] == 0)
{
$ic = C('IMAGE_CONFIG');
$upload = new \Think\Upload(array(
'rootPath' => $ic['rootPath'],
'maxSize' => $ic['maxSize'],
'exts' => $ic['exts'],
));// 实例化上传类
$upload->savePath = $dirName . '/'; // 图片二级目录的名称
// 上传文件
// 上传时指定一个要上传的图片的名称,否则会把表单中所有的图片都处理,之后再想其他图片时就再找不到图片了
$info = $upload->upload(array($imgName=>$_FILES[$imgName]));
if(!$info)
{
return array(
'ok' => 0,
'error' => $upload->getError(),
);
}
else
{
$ret['ok'] = 1;
$ret['images'][0] = $logoName = $info[$imgName]['savepath'] . $info[$imgName]['savename'];
// 判断是否生成缩略图
if($thumb)
{
$image = new \Think\Image();
// 循环生成缩略图
foreach ($thumb as $k => $v)
{
$ret['images'][$k+1] = $info[$imgName]['savepath'] . 'thumb_'.$k.'_' .$info[$imgName]['savename'];
// 打开要处理的图片
$image->open($ic['rootPath'].$logoName);
$image->thumb($v[0], $v[1])->save($ic['rootPath'].$ret['images'][$k+1]);
}
}
return $ret;
}
}
}
下面是我在函数中具体使用的代码
[PHP] 纯文本查看 复制代码 $res = uploadOne('logo','Goods',array(
array(50,50),
array(130,130),
array(350,350),
array(700,700),
));
if ($res['ok'] == 1) {
// dump($res);
// die;
$date['logo'] = $res[0];
$date['sm_logo'] = $res[1];
$date['mid_logo'] = $res[2];
$date['big_logo'] = $res[3];
$date['mbig_logo'] = $res[4];
}
我也不知道具体是哪里的问题,MySQL就报告了下面的错误
希望各位老师和同学们能帮我解答下,谢谢大家了!
|