ThinkPHP3.2上传图片+添加水印+缩略图(ThinkPHP文件上传实践)
发布时间:2017-04-17 编辑:小张个人博客 查看次数:5254
ThinkPHP示例之图片上传,包括图片上传、数据库保存、缩略图生成以及图片水印功能演示。在ThinkPHP中使用上传功能无需进行特别处理。
首先不要忘记对提交表单的form添加enctype=”multipart/form-data”,否则,是无法上传文件的。
<FORM METHOD=POST enctype="multipart/form-data" ACTION="__URL__/upload"> <TABLE> <TR> <TD align="right">昵称:</TD> <TD><INPUT TYPE="text" NAME="nickname"></TD> </TR> <TR> <TD align="right">邮箱:</TD> <TD><INPUT TYPE="text" NAME="email"></TD> </TR> <TR> <TD align="right">头像:</TD> <TD><INPUT TYPE="file" name="photo" ></TD> </TR> </TABLE> </FORM>
ThinkPHP3.2上传图片+添加水印+缩略图实践:
ThinkPHP示例之图片上传,包括图片上传、数据库保存、缩略图生成以及图片水印功能演示。ThinkPHP文件上传操作使用Think\Upload
类,假设前面的表单提交到当前控制器的upload方法,我们来看下upload方法的实现代码:
$upload = new \Think\Upload();// 实例化上传类 $upload->maxSize = 3145728 ;// 设置附件上传大小 $upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型 $upload->rootPath = "./Public/Admin/Uploads/"; // 设置附件上传目录// 上传文件 $upload ->autoSub = true; $upload ->subName = array('date','Ymd'); //设置上传文件规则 $upload->saveRule = 'uniqid'; $info = $upload->uploadOne($_FILES['photo']); if(!$info) { // 上传错误提示错误信息 $this->error($upload->getError()); }else { // 上传成功 获取上传文件信息 $img = $info['savepath'] . $info['savename']; $image = new \Think\Image(); $BinImg = $upload->rootPath . "$img"; // 获得原图绝对路径 $image->open($BinImg); // 打开原图 // 添加水印 // $image ->water($upload->rootPath."logo.png")-> save($upload ->rootPath.$img); // 设置缩略图宽和高 $w = array( 1 => array( 'w' => 278,'h' => 206,'n' => '278x206_'), 2 => array('w' => 178,'h' => 106,'n' => '178x106_') ); // 生成一张 // $image ->thumb(278,206,2); // 设置宽高和缩略类型 foreach ($w as $k => $v){ $image->thumb($v['w'],$v['h'], 2); // 设置宽高和缩略类型 // 保存缩略图片 $smallimg[$k]= $info['savepath'] . "$v[n]" . $info['savename']; $image->save($upload->rootPath . $smallimg[$k]); $_POST['small'.$k] = $smallimg[$k]; } $_POST['goods_img'] = $img; // $_POST['small'] = $smallimg; } var_dump($_POST);exit; $z = $WorkModel -> getById($id); @unlink($upload->rootPath.$z['img']); //删除原图 @unlink($upload->rootPath.$z['small']); // 删除缩略图 $WorkModel -> create(); $res = $WorkModel -> save(); if($res){ $this -> success("修改成功!",__CONTROLLER__."/WorksList"); }else{ $this -> error("修改失败!"); }
ThinkPHP示例之图片上传,包括图片上传、数据库保存、缩略图生成以及图片水印功能演示。ThinkPHP上传类对图片文件的上传安全做了支持,如果企图上传非法的图像文件,系统会提示 非法图像文件。为了更好的使用上传功能,建议你的服务器开启finfo模块支持!希望对你有所帮助!
Copyright © 小张个人博客 All Rights Reserved 渝ICP备15006773号-1
联系方式:[email protected] | 本站文章仅供学习和参考