THinkPHP上面关于图片上传类的使用

在ThinkPHP提供的官方实例中有一个上传图像类的代码非常好,在这里我给分析下,如何的使用。

实例代码如下:

<?php 

class IndexAction extends Action { 

    public function index() { 
        $Photo = M('Photo'); 
        $list = $Photo->order('create_time desc')->limit(2)->findAll();
        $this->assign('list', $list); 
        $this->display(); 
    } 

    public function upload() { 
        if (!empty($_FILES)) { 
            //如果有文件上传 上传附件 
            $this->_upload(); 
            //$this->forward(); 
        } 
    } 

    // 文件上传 
    protected function _upload() { 
        import("@.ORG.UploadFile"); 
        $upload = new UploadFile(); 
        //设置上传文件大小 
        $upload->maxSize = 3292200; 
        //设置上传文件类型 
        $upload->allowExts = explode(',', 'jpg,gif,png,jpeg'); 
        //设置附件上传目录 
        $upload->savePath = '/tp/Examples/File/Tpl/default/Public/Uploads/'; 
        //设置需要生成缩略图,仅对图像文件有效 
        $upload->thumb = true; 
        // 设置引用图片类库包路径 
        $upload->imageClassPath = '@.ORG.Image'; 
        //设置需要生成缩略图的文件后缀 
        $upload->thumbPrefix = 'm_,s_';  //生产2张缩略图 
        //设置缩略图最大宽度 
        $upload->thumbMaxWidth = '400,100'; 
        //设置缩略图最大高度 
        $upload->thumbMaxHeight = '400,100'; 
        //设置上传文件规则 
        $upload->saveRule = uniqid; 
        //删除原图 
        $upload->thumbRemoveOrigin = true; 
        if (!$upload->upload()) { 
            //捕获上传异常 
            $this->error($upload->getErrorMsg()); 
        } else { 
            //取得成功上传的文件信息 
            $uploadList = $upload->getUploadFileInfo(); 
            import("@.ORG.Image"); 
            //给m_缩略图添加水印, Image::water('原文件名','水印图片地址') 
            Image::water($uploadList[0]['savepath'].'m_'.$uploadList[0]['savename'], '/tp/Examples/File/Tpl/default/Public/Images/logo2.png');
            $_POST['image'] = $uploadList[0]['savename']; 
        } 
        $model = M('Photo'); 
        //保存当前数据对象 
        $data['image'] = $_POST['image']; 
        $data['create_time'] = time(); 
        $list = $model->add($data); 
        if ($list !== false) { 
            $this->success('上传图片成功!'); 
        } else { 
            $this->error('上传图片失败!'); 
        } 
    } 



} 

?>


posted @ 2011-10-11 10:54  夏至冬末  阅读(215)  评论(0编辑  收藏  举报