ThinkPhP3.2中图片添加,并生成缩略图

来源:互联网 发布:loveless world知乎 编辑:程序博客网 时间:2024/06/05 17:48

1:视图层:

<form class="layui-form" action="__APP__/Home/Goods/addgoodsDo" method="post" enctype="multipart/form-data"> <!-- 提示:如果你不想用form,你可以换成div等任何一个普通元素 -->
  <div class="layui-form-item">
    <label class="layui-form-label">人气值</label>
    <div class="layui-input-block">
      <input type="text" name="subcount" required  lay-verify="required" placeholder="请输入人气值" autocomplete="off" class="layui-input">
    </div>
  </div>
  <div class="layui-form-item">
    <label class="layui-form-label">商品名称</label>
    <div class="layui-input-block">
      <input type="text" name="title" required  lay-verify="required" placeholder="请输入商品名称" autocomplete="off" class="layui-input">
    </div>
  </div>
  <div class="layui-form-item">
    <label class="layui-form-label">商品分类</label>
    <div class="layui-input-block">
      <select name="pcate" lay-filter="aihao">
        <option value="">请选择</option>
       <?php foreach($category as $key=>$value){ ?>
          <option value="<?php echo $value['id']?>"><?php echo $value['name']?></option>
        <?php }?>
       </select>
    </div>
  </div>
  <div class="layui-form-item">
    <label class="layui-form-label">商品图片</label>
    <div class="layui-input-block">
      <input type="file" name="thumb">
    </div>
  </div>

2控制器:

第一种情况没有缩略图上传:

      public function addgoodsDo()
        {    
            $upload = new \Think\Upload();// 实例化上传类   
            $upload->maxSize   =     3145728 ;// 设置附件上传大小   
            $upload->exts      =     array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
            $upload->rootPath    =        './Uploads/';//上传根目录
            $upload->savePath  =      './Home/Public/Uploads/'; // 设置附件上传目录    // 上传文件    
            $info   =   $upload->uploadOne($_FILES['thumb']);
            if(!$info) {// 上传错误提示错误信息        
                $this->error($upload->getError());    
            }else{// 上传成功
                //print_r($info);die;
                $seller=$_SESSION['seller'] ;
                $storeid=$seller['id'];
                $subcount=I('post.subcount');//人气值
                $title=I('post.title');//商品名称
                $find=M('goods')->where(array("storeid"=>$storeid,"title"=>$title))->find();
                if($find)
                {
                    $this->error('您已经添加过该名称商品');  
                }
                $pcate=I('post.pcate');//商品分类
                $marketprice=I('post.marketprice');
                $productprice=I('post.productprice');
                $credit=I('post.credit');
                $unitname=I('post.unitname');
                $description=I('post.description');
                $displayorder=I('post.displayorder');
                $thumb=$info['savepath'].$info['savename'];//获取图片信息
                $data=[
                'storeid'=>$storeid,
                'subcount'=>$subcount,
                'title'=>$title,
                'pcate'=>$pcate,
                'marketprice'=>$marketprice,
                'productprice'=>$productprice,
                'credit'=>$credit,
                'unitname'=>$unitname,
                'description'=>$description,
                'thumb'=>$thumb,
                'displayorder'=>$displayorder,
                ];
                $result=M('goods')->add($data);
                if($result)
                {
                    $this->success('上传成功!');    
                }else{
                    $this->error('上传失败!');   
                }
                
             }

        }

第二种情况有缩略图上传:

public function addgoodsDo()
        {    
            $upload = new \Think\Upload();// 实例化上传类   
            $upload->maxSize   =     3145728 ;// 设置附件上传大小   
            $upload->exts      =     array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
            $upload->rootPath    =        './Uploads/';//上传根目录
            $upload->savePath  =      './Home/Public/Uploads/'; // 设置附件上传目录    // 上传文件    
            $upload->autoSub     = true;
            $upload->subName     = array('date','Ymd');
            $upload->saveName = array('uniqid','');//设置上传文件规则
            $info= $upload->upload();//执行上传方法
            if(!$info) {// 上传错误提示错误信息        
                $this->error($upload->getError());    
            }else{// 上传成功
                //print_r($info);die;
                 //获取上传文件信息
                foreach ($info as $file){
                    $image = $file['savepath'].$file['savename'];
                    $size = $file['size'];
                    $dir=  $file['savepath'];
                    $filename=$file['savename'];
                    
                }
                //图片物理目录删除、改名图片用
                $path= './Uploads'.$dir;
                $img =new  \Think\Image();//实例化
                $img->open($path.$filename);//打开物理图片
               //使用thumb方法生成缩略图并改名为:som_.$filename此时在项目根目录上
                $img->thumb(150, 150)->save(som_.$filename);
                //重新赋值方便处理
                $oldfile=som_.$filename;
                //rename()更改成新的文件名,此时还在项目根目录上
                rename($oldfile, new_.$filename);
                //重新赋值方便处理 new_.$filename为更名后新文件名
                $newfile=new_.$filename;
                //移动新文件到物理$path 目录最终生缩略图文件为:new_xxxx.jpg(后缀名不作更改只是在前加了new_)
                rename($newfile,"$path/$newfile" );
                //$thumb获取缩略图的地址和文件名用于写放数据库用
                $thumb=$file['savepath'].$newfile;

                $seller=$_SESSION['seller'] ;
                $storeid=$seller['id'];
                $subcount=I('post.subcount');//人气值
                $title=I('post.title');//商品名称
                $find=M('goods')->where(array("storeid"=>$storeid,"title"=>$title))->find();
                if($find)
                {
                    $this->error('您已经添加过该名称商品');  
                }
                $pcate=I('post.pcate');//商品分类
                $marketprice=I('post.marketprice');
                $productprice=I('post.productprice');
                $credit=I('post.credit');
                $unitname=I('post.unitname');
                $description=I('post.description');
                $displayorder=I('post.displayorder');
                //$thumb=$info['savepath'].$info['savename'];//获取图片信息
                $data=[
                'storeid'=>$storeid,
                'subcount'=>$subcount,
                'title'=>$title,
                'pcate'=>$pcate,
                'marketprice'=>$marketprice,
                'productprice'=>$productprice,
                'credit'=>$credit,
                'unitname'=>$unitname,
                'description'=>$description,
                'thumb'=>$thumb,//数据库中表图片字段
                'displayorder'=>$displayorder,
                ];
                $result=M('goods')->add($data);
                if($result)
                {
                    $this->success('上传成功!');    
                }else{
                    $this->error('上传失败!');   
                }
                
             }

        }