| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 | <?php/* * +---------------------------------------------------------------------- * | 图片服务器上传接口 * +---------------------------------------------------------------------- * | Copyright (c) 2015 summer All rights reserved. * +---------------------------------------------------------------------- * | Author: summer <aer_c@qq.com> <qq7579476> * +---------------------------------------------------------------------- * | This is not a free software, unauthorized no use and dissemination. * +---------------------------------------------------------------------- * | Date * +---------------------------------------------------------------------- */class UCloud_Lite {    protected $config = array(        //上传的API地址,不带http://        'api' => '',        //统一的key        'accessKey' => '',        'secretKey' => '',        //自定义配置的空间        'bucket' => '',        'host' => '', //必带http://        'timeout' => 60    );    //上传文件信息    private $upload_file;    //文件存储的默认路径    private $default_path = '';    //文件存储路径    private $save_path;    //上传文件名    public $file_name;    //上传文件后缀名    private $ext;    //错误信息    public $error = '';        public function __construct() {        if(DI()->config->get('app.UCloud'))            $this->config = array_merge($this->config, DI()->config->get('app.UCloud'));    }    /**     * 设置     *     * @param mixed $key     * @param mixed $value     */    public function set($key,$value){        $this->$key = $value;    }    /**     * 读取     */    public function get($key){        return $this->$key;    }    /**     * 上传操作     *     * @param string $field 上传的文件信息     * @return array or bool     */    public function upfile($fileData) {          //上传文件        $this->upload_file = $fileData;        if ($this->upload_file['tmp_name'] == ""){            $this->setError('File is not empty!');            return false;        }        //文件后缀名        $tmp_ext = explode(".", $this->upload_file['name']);        $tmp_ext = $tmp_ext[count($tmp_ext) - 1];        $this->ext = strtolower($tmp_ext);        //设置文件名称        //if(empty($this->file_name)){            $this->setFileName();        //}        $config = $this->config;        //获取上传引擎信息        //DI()->loader->addDirs('Library/UCloud');        $engine = 'UCloud_Engine_' . ucfirst(DI()->config->get('app.UCloudEngine'));        $upload = new $engine('',$config);        //设置图片信息        $file = $this->upload_file;        $file['savepath'] = $this->setPath();        $file['savename'] = $this->file_name;        //开始上传        $res = $upload->save($file);        if (!$res) {            DI()->logger->debug('failed to upload file to '. $engine,                 array('Err' => $upload->getError()));            return false;        } else {            $fileName = $this->setPath() . '/' . $this->file_name;            $fileUrl = $config['host'] . '/' . $fileName;            DI()->logger->debug('succeed to upload file to '.$engine, $fileUrl);            return array(                'url' => $fileUrl,                'file' => $fileName            );        }    }    /**     * 设置文件名称 不包括 文件路径     *     * 生成(从2000-01-01 00:00:00 到现在的秒数+微秒+四位随机)     */    private function setFileName(){        if(empty($this->file_name)){            $tmp_name = sprintf('%010d',time() - 946656000)                            . sprintf('%03d', microtime() * 1000)                            . sprintf('%04d', mt_rand(0,9999));        }else{            $tmp_name = $this->file_name;        }                $this->file_name = $tmp_name . '.' . $this->ext;    }    /**     * 设置文件存储路径     */    private function setPath(){        if($this->save_path)            return $this->default_path . '/' . $this->save_path;        else            return $this->default_path;    }    /**     * 设置错误信息     *     * @param string $error 错误信息     * @return bool 布尔类型的返回结果     */    private function setError($error){        $this->error = $error;    }}
 |