A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HCL666 中级黑马   /  2017-3-22 22:07  /  948 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

事情是这样的 ,我使用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就报告了下面的错误

希望各位老师和同学们能帮我解答下,谢谢大家了!

2 个回复

倒序浏览
尴尬 昨天产生的bug今天被我自己发现了,原来是我自己的代码写的有问题 下面是我发现的问题
下面是我解决后的代码

回复 使用道具 举报
细节决定成败呀
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马