PHP Thinkphp3.2图片上传 及 数据流图片上传

/**
     * 图片函数
     */
    public function upload(){
        header("Content-Type: text/html;charset=utf-8");
    
        $upload = new \Think\Upload();// 实例化上传类
        $upload->maxSize   =     0 ;// 设置附件上传大小
        $upload->exts      =     array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
        $rootPath  =      './Public/Uploads/'.date('Ymd').'/'; // 设置附件上传目录
        if (!file_exists($rootPath)){
            mkdir($rootPath);
        }
        $upload->rootPath = $rootPath;
        $upload->autoSub = false;
        $info   =   $upload->upload();// 上传文件
        if(!$info) {
            // 上传错误提示错误信息
            $this->error($upload->getError());
        }else{
            return $info;// 上传成功
        }
    }

	
	public function uploads() {
        $upload = new \Think\Upload(); // 实例化上传类
        $upload->maxSize = 0; // 设置附件上传大小
        $upload->exts = array('jpg', 'gif', 'png', 'jpeg'); // 设置附件上传类型
        $upload->rootPath = './Public/Uploads/'; // 设置附件上传根目录
        $upload->savePath = ''; // 设置附件上传(子)目录
        // 上传文件
        $info = $upload->upload();
        if (!$info) {// 上传错误提示错误信息
            //return $upload->getError();
            return false;
        } else {// 上传成功
            return $info;
        }
    }
   /**
     * 数据流图片接收[base64解码]
     * @param   $pic_arr  数组
     * $pic_arr = array(
     *      '0'=>数据流,
     *      '1'=>数据流,
     * )
     * @date    2016-6-1 11:44:13
     */
    public function savePic($pic_arr = '') {
        //新建文件夹
        $new_folder = date('Ymd', time());
        //保存路径
        $path = './Public/Uploads/' . $new_folder;
        // 不存在的保存目录予以创建
        if (!is_dir($path)) {
            mkdir($path);
        }
        //扩展名
        $ext = '.png';
        //写入内容
        $pic_url = array();
        foreach ((array) $pic_arr as $key => $val) {
            $filename = time() . rand(0000, 9999);
            $save = 'Public/Uploads/' . $new_folder . '/' . $filename . $ext; //图片保存用这个路径
            file_put_contents($save, base64_decode($val) . '|');
            $pic[] = '/' . $save; //改变原来编码的数组的值
        }
        $pic_url = implode('|', $pic); //多个图串起来
        return $pic_url;
    }

/**
 * 数据流图片上传
 * $post_img字符串格式,多个用“|”隔开
 * $ext图片后缀
 * 
 */
public function dataImage($post_img, $ext = '.jpg')
 {
        //图片----单张图片(后期根据测试数据满足3张图片)
        if (empty($post_img)) {
            $test_five = '';
        } else {
            $post_img   = explode('|', $post_img);//字符串转成数组
            $post_img_1 = array_filter($post_img);
            $post_img_2 = implode('|', $post_img_1);
            $test_two   = explode('|', $post_img_2);//字符串转成数组
            
            //将一维数组转换成二维数组
            $test_three = array();
            foreach ($test_two as $k => $v) {
                $test_three[] = array('img' => $v);
            }
            //循环图片存储
            foreach ($test_three as $k => $v) {
                //保存图片路径
                $path_one = './Public/Uploads/'.date('Ymd').'/';//存储到项目
                $path_two = '/Public/Uploads/'.date('Ymd').'/';//存储到数据表
                //没有就创建
                if (!file_exists($path_one)){
                    mkdir($path_one);
                }
                $filename = md5(time().mt_rand(10, 9999)).$ext;//要生成的图片名字
                $thumb = $path_one.'thumb_'.$filename;
                $newFilePath_one = $path_one.$filename;//项目地址
                $newFilePath_two = $path_two.'thumb_'.$filename;//数据url--存储路径
                
                $dataIn = base64_decode($v['img']);//解码
				
                //$newFile = fopen($newFilePath_one,"w"); //打开文件准备写入
                //fwrite($newFile,$dataIn); //写入二进制流到文件
                //fclose($newFile); //关闭文件
                
		file_put_contents($newFilePath_one, $dataIn);
				
	        //生成缩略图
                $image = new \Think\Image();
                $image->open($newFilePath_one);
                $image->thumb(300, 300,\Think\Image::IMAGE_THUMB_SCALE)->save($thumb);
                $test_three[$k]['image'] = $newFilePath_two;//输出图片路径
            }
            //将二维数组转换为一维数组
            $test_four = array();
            foreach ($test_three as $k => $v){
                $test_four[] = $v['image'];
            }
            //将一维数组转换成字符串
            $test_five = implode('|',$test_four);//3张图片合并--图片url路径
        }
	return $test_five;
 }

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Back To Top

鄂ICP备17008157号-1