zoukankan      html  css  js  c++  java
  • tp3.2 自带的文件上传及生成缩略图功能

     public function upload_file($file_name,$width,$height) {
            //检查图片尺寸是否合法
            $image_size = getimagesize($_FILES[$file_name]['tmp_name']);
            $img_tmp_width=$image_size['0'];
            $img_tmp_height=$image_size['1'];
            $size_result = $this->checkImgSize($width,$height,$img_tmp_width,$img_tmp_height);
            if($size_result['status'] == '1'){
                 return $size_result;   //格式错误直接返回
            }
            //执行上传
            $upload_path = C('upload_path');                      // Public/Uploads/
            $upload = new ThinkUpload();                        // 实例化上传类
            $upload->maxSize = 3145728;                           // 设置附件上传大小
            $upload->exts = array('jpg', 'gif', 'png', 'jpeg');   // 设置附件上传类型
            $upload->rootPath = './' . rtrim($upload_path, '/');  // 设置附件上传根目录
            $upload_img_url=C('upload_img_url');                  // /www/web/feelee_mall_img/public_html/
            $rootPath=$upload_img_url . rtrim($upload_path, '/'); // 设置附件上传根目录 /www/web/feelee_mall_img/public_html/Public/Uploads
            $upload->rootPath = $rootPath;
            $savepath = '/ad/';
            $path = '/' . $upload_path;
            $upload->saveName = uniqid();
            $upload->savePath = $savepath;
            $upload->replace = true;
            $upload->autoSub = true;
            $upload->subName = "origin"; //date("Ymd");
            $path1='/ad/origin/';
            if(!is_dir($path1)){
                mkdir($path1,0755);
            }
            // 上传单个文件
            $info = $upload->uploadOne($_FILES[$file_name]);
            if (!$info) {// 上传错误提示错误信息
                $upload_error = C('upload_error_msg');
                $error = $upload_error[$upload->getError()];
                if ($error == '') {
                    $error = $upload->getError();
                }
                return $data = array(
                    'msg' => $error,
                    'status' => 1,
                    'result'=>null
                );
            } else {// 上传成功 获取上传文件信息
                $filenames = $path . $info['savepath'] . $info['savename'];
                //生成缩略图
                $info2=$this->createThumb($info,$rootPath);
                $preview=C('img_base').$filenames;
                return  $data = array(
                    'msg' => '上传成功',
                    'status' => '0',
                    'result' =>array(
                        'returnPath'=>$filenames,//保存用
                        'preview'=>$preview      //显示用
                    )
                );
            }
    }
    //生成缩略图
    public function createThumb($info,$rootPath){
            $path2=$rootPath.'/ad/thumb/';
            if(!is_dir($path2)){
                mkdir($path2,0755);
            }
            $pic_size=C('pic_size');
            $cn=count($pic_size);
            $image=new ThinkImage();
            //打开要生成缩略图的文件
            for($i=0;$i<$cn;$i++){
                $image->open($rootPath."/ad/origin/".$info['savename']);
                $url_pic='/thumb/'.$pic_size[$i] ."_". $info['savename'];
                $in=strpos($pic_size[$i],"_");
                $width=substr($pic_size[$i],0,$in);
                $height=substr($pic_size[$i],$in+1);
                //生成ios缩略图
                $image->thumb($width,$height,1)->save($rootPath."/ad".$url_pic);
            }
    }

    manageApplicationCommonConfconfig.php

     'upload_img_url'=>'/home/wwwroot/default/feelee_mall_img/public_html/',
     //文件上传返回错误说明替换
     "upload_error_msg" =>array(
            '没有上传的文件!' => '没有上传的文件!',
            '非法图像文件!' => '不允许的文件类型,只能上传jpg,gif,png,jpeg格式的文件!',
            '未知上传错误!' => '未知上传错误!',
            '非法上传文件!' => '非法上传文件!',
            '上传文件大小不符!' => '上传文件大小超过3M!',
            '上传文件MIME类型不允许!' => '不允许的文件类型,只能上传jpg,gif,png,jpeg格式的文件!',
            '上传文件后缀不允许' => '不允许的文件类型,只能上传jpg,gif,png,jpeg格式的文件!',
            '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值!' => '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值!',
            '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值!' => '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值!',
            '文件只有部分被上传!' => '文件只有部分被上传!',
            '没有文件被上传!' => '没有文件被上传!',
            '找不到临时文件夹!' => '找不到临时文件夹!',
            '文件写入失败!' => '文件写入失败!',
            '文件命名规则错误!' => '文件命名规则错误!'
     ),
    
    //图片缩略图尺寸 'pic_size'=>array("640_960","640_1136","750_1334","1242_2208","1125_2436","720_1280","800_1280","1080_1920","1440_2560"),
  • 相关阅读:
    浅谈 Nginx 的内部核心架构设计
    项目中常用的19条MySQL优化
    Redis分布式锁的正确实现方式
    C# 读取XML文件示例
    C# LINQ to XML示例
    最新的极光推送服务器端代码(java服务器后台向手机端自定义推送消息)
    极光推送>>java SDK服务端集成后台项目(使用详解)
    关于如何在Listener中注入service和ServletContextListener源码分析
    mysql 去除重复 Select中DISTINCT关键字的用法 在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是 distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,
    Spring 整合 Quartz 实现动态定时任务
  • 原文地址:https://www.cnblogs.com/zouke1220/p/9109830.html
Copyright © 2011-2022 走看看