ThinkPHP3.2上传图片+添加水印+缩略图(ThinkPHP文件上传实践)

发布时间:2017-04-17 编辑:小张个人博客 查看次数:2378

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模块支持!希望对你有所帮助!

出处:小张个人博客

网址:http://blog.023xs.cn/

您的支持是对博主最大的鼓励,感谢您的认真阅读。欢迎转载,但请保留该声明。

顶部

Copyright © 小张个人博客 All Rights Reserved 渝ICP备15006773号-1

联系方式:[email protected] | 本站文章仅供学习和参考

渝公网安备 50024102500267号