文档章节

thinkphp upload类 图片上传到本地 生成缩略图 再 ftp上传

聂大锤
 聂大锤
发布于 2016/03/17 11:40
字数 742
阅读 90
收藏 0

  public function upload(){
         if(intval(session("userid"))==0)
        {    
            header('Content-type: text/json');
            header('HTTP/1.1 401 error');
            echo json_encode(array("success" => false,"code"=> 1001,"msg" => "请先登录!","obj"=> null,"map"=> null,"list"=> null));
            exit;
        }
        if(I('get.fileType',0)==2){
            $ftpconf = C('UPLOAD_VIDEO_TYPE_CONFIG');//上传到音频服务器
        }
        else{
            $ftpconf = C('UPLOAD_TYPE_CONFIG');//上传到图片服务器
        }
        if(I('get.fileType',0)==2)
        {
            $upload->exts = array('mp3');// 设置附件上传类型
            $upload->savePath = date('Y',time()).'/'.date('m',time()).'/'.date('d',time()).'/'.session("userid").'/'; // 设置附件上传(子)目录
            $upload->subName  = '';
        }
        if(I('get.fileType',0)!=2){
                if(I('get.fileType',0)==0){
                    $savePath="backImg/";//背景图
                }else{
                    $savePath="pic/";//封面图
                }
                //*********上传本地背景图              
                $upload2 = new \Think\Upload();// 实例化上传类
                $upload2->maxSize = 3145728 ;// 设置附件上传大小
                $upload2->exts = array('jpg', 'gif', 'png', 'jpeg');
                $upload2->rootPath = './Uploads/';
                $upload2->savePath = $savePath.session("userid").'/';
                $upload2->subName  = array('date','Ym');
                $upload2->saveName = 'uniqid';
                $info2 = $upload2->upload();
                //***ftp背景图            
                $upload = new \Think\Upload($ftpconf,'',$ftpconf);
                $upload->maxSize = 3145728 ;        
                $upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
                $upload->subName  = array('date','Ym');
                $upload->savePath = 'h5/'.$savePath.session("userid").'/';
                $upload->rootPath = $ftpconf['rootPath'];
                $upload->saveName = 'uniqid';
                // 采用GUID序列命名 $upload->saveName = 'guid';
                $info = $upload->upload(); //上传到FTP图片服务器
        }else{
            //将音乐上传到本地
            $upload2 = new \Think\Upload(array(),'LOCAL');// 实例化上传类
            $upload2->maxSize = 3145728 ;// 设置附件上传大小
            $upload2->exts = array('mp3');// 设置附件上传类型
            $upload2->savePath = date('Y',time()).'/'.date('m',time()).'/'.date('d',time()).'/'.session("userid").'/'; // 设置附件上传(子)目录
            $upload2->rootPath = './Uploads/'; // 设置附件上传根目录
            $upload2->subName  = '';
            $fileftpname = str_replace('.'.$info['file']['ext'],'',$info['file']['savename']);
            $upload2->saveName = $fileftpname;
            $info2 = $upload2->upload();
        }
        
        if(!$info || !$info2) {// 上传错误提示错误信息
            header('Content-type: text/json');
            header('HTTP/1.1 401 error');
            echo json_encode(array("success" => false,"code"=> 1001,"msg" => "文件上传错误!","obj"=> null,"map"=> null,"list"=> null));
             $this->error($upload->getError());
            exit;
        }else{// 上传成功 获取上传文件信息
            header('Content-type: text/json');
            header('HTTP/1.1 200 ok');
            if(I('get.fileType',0)!=2){
                $info = $info2;//生成缩略图必须是本地文件
            }
            foreach($info as $file){
                if(I('get.fileType',0)!=2)
                {
                    $image = new \Think\Image();
                    $thubimage = $upload2->rootPath.$file['savepath'].$file['savename'];
                    
                    //缩略图名字
                    $thubimagename = str_replace(".".$file['ext'],"_thumb.".$file['ext'],$file['savename']);
                    //本地缩略图/Uploads/pic/1/201603/532_thumb.jpg
                    $thubimagenew =$upload2->rootPath.$file['savepath'].$thubimagename;
                    $image->open($thubimage);
                    if(I('get.fileType',0)==0)
                    {
                        $image->thumb(80, 126)->save($thubimagenew);
                    }
                    else
                    {
                        $image->thumb(80, 80)->save($thubimagenew);
                    }

                    //将生成的缩略图上传到图片服务器
                    $ftpuser = $ftpconf['username'];
                    $ftppass = $ftpconf['password'];
                    $ftphost = $ftpconf['host'];
                    $ftpport = $ftpconf['port'];
                    $rootPath = $ftpconf['rootPath'];
                    $ftptimeout = $ftpconf['timeout'];
                    //链接FTP服务器
                    $link = ftp_connect($ftphost, $ftpport, $ftptimeout);
                    //ftp保存缩略图地址
                    $ftpthubimagenew=str_replace("Uploads","h5", $thubimagenew);
                    if($link){
                        ftp_login($link, $ftpuser, $ftppass);
                        $putinfo = ftp_put($link,$ftpthubimagenew,$thubimagenew,FTP_BINARY);
                        if (!$putinfo){
                             echo '{"success":false,"code":101,"msg":"操作失败","obj":null,"map":null,"list":null}';
                        }
                    }
                    ftp_close($link);
                }
                $sizeint = intval($file['size']/1024);
                $jsonstr = '{"success":true,"code":200,"msg":"success","obj":{"id":9386090,"name":"'.$file['savename'].'","extName":"'.strtoupper($file['ext']).'","fileType":0,"bizType":0,"path":"'.$file['savepath'].$file['savename'].'","tmbPath":"'.$thubimagenew.'","createTime":1426209412922,"createUser":"'.session("userid").'","sort":0,"size":'.$sizeint.',"status":1},"map":null,"list":null}';
                

                
                $model = M('upfile');
                // 取得成功上传的文件信息
                // 保存当前数据对象
                $data['ext_varchar'] = strtoupper($file['ext']);
                $data['filename_varchar'] = $file['name'];
                $data['filetype_int'] = I('get.fileType',0);
                $data['biztype_int'] = I('get.bizType',0);
                $data['userid_int'] = session("userid");
                $data['filesrc_varchar'] = $file['savepath'].$file['savename'];
                $data['sizekb_int'] = $sizeint;
                if(I('get.fileType',0)==1)//封面图路径字段
                $thubimagenew=$file['savepath'].$thubimagename;
                $data['filethumbsrc_varchar'] =$thubimagenew;
                $data['create_time'] = date('y-m-d H:i:s',time());
                $model->add($data);
                echo $jsonstr;
            }
        }
    }

© 著作权归作者所有

上一篇: curl post 请求
下一篇: 正则替换图片
聂大锤
粉丝 0
博文 13
码字总数 5814
作品 0
东城
程序员
私信 提问
!求助:ubuntu下thinkphp框架生成目录权限的问题

!求助:ubuntu下thinkphp框架生成的Application目录中的文件权限都是755, 能否改变, 使其生成时就是777. 另外, 使用thinkphp, 上传文件时, 生成的名字为日期的目录权限无法改变。用upl...

xkeos
2014/05/03
3.6K
5
Thinkphp学习笔记 调用Image类生成缩略图

Thinkphp的Image类 在ThinkPHP/Extend/Library/ORG/Util/Image.class.php中。 调用方法如下: import("ORG.Util.Image");$Img = new Image();//实例化图片类对象$imagepath = './图片路径';/......

Jceee
2014/05/17
5.1K
0
thinkphp_图片上传裁剪功能_已迁移

准备材料 THINKPHP jQuery表单插件 cropper 裁剪插件 思路: 利用THINKPHP上传文件类与图片裁剪类,前台想办法组合参数给后台 那怎么样可以异步提交文件呢 关键就是 jquery表单插件了 后台准...

辣条拌鱼翅
2015/09/25
4.2K
1
ThinkPHP学习笔记-上传类UploadFile的使用

上传类的使用很简单,如果是第一次使用上传功能的朋友需要注意的是html提交表单中的表单属性要加上 enctype属性,如: <form method="post" action="upload.php" enctype="multipart/form-da......

Jceee
2014/03/23
331
0
Thinkphp整合最新Ueditor编辑器

说到最新的富文本编辑器的确不少(ckeditor、fkeditor、ueditor),这些富文本编辑器如果单独使用基本上很方便,不需要做额外的配置,只要把官方的插件下载下来放到一个web容器中,看看 插件中提...

nsns
2018/08/24
122
0

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
15
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
17
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部