| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | <?phpnamespace Qiniu\Storage;use Qiniu\Config;use Qiniu\Http\HttpClient;use Qiniu\Storage\ResumeUploader;use Qiniu\Storage\FormUploader;/** * 主要涉及了资源上传接口的实现 * * @link http://developer.qiniu.com/docs/v6/api/reference/up/ */final class UploadManager{    private $config;    public function __construct(Config $config = null)    {        if ($config === null) {            $config = new Config();        }        $this->config = $config;    }    /**     * 上传二进制流到七牛     *     * @param string   $upToken  上传凭证     * @param string   $key      上传文件名     * @param resource $data     上传二进制流     * @param array    $params   自定义变量,规格参考 http://developer.qiniu.com/docs/v6/api/overview/up/response/vars.html#xvar     * @param string   $mime     上传数据的mimeType     * @param bool     $checkCrc 是否校验crc32     *     * @return array    包含已上传文件的信息,类似:     *                                              [     *                                                  "hash" => "<Hash string>",     *                                                  "key" => "<Key string>"     *                                              ]     */    public function put($upToken, $key, $data, $params = null, $mime = 'application/octet-stream', $fname = "default_filename")    {        $params = self::trimParams($params);        return FormUploader::put($upToken, $key, $data, $this->config, $params, $mime, $fname);    }    /**     * 上传文件到七牛     *     * @param string $upToken  上传凭证     * @param string $key      上传文件名     * @param string $filePath 上传文件的路径     * @param array  $params   自定义变量,规格参考 http://developer.qiniu.com/docs/v6/api/overview/up/response/vars.html#xvar     * @param string $mime     上传数据的mimeType     * @param bool   $checkCrc 是否校验crc32     *     * @return array    包含已上传文件的信息,类似:     *                                              [     *                                                  "hash" => "<Hash string>",     *                                                  "key" => "<Key string>"     *                                              ]     */    public function putFile($upToken, $key, $filePath, $params = null, $mime = 'application/octet-stream', $checkCrc = false)    {        $file = fopen($filePath, 'rb');        if ($file === false) {            throw new \Exception("file can not open", 1);        }        $params = self::trimParams($params);        $stat = fstat($file);        $size = $stat['size'];        //不满足分片上传条件        if ($size <= Config::BLOCK_SIZE) {            $data = fread($file, $size);            fclose($file);            if ($data === false) {                throw new \Exception("file can not read", 1);            }            return FormUploader::put($upToken, $key, $data, $this->config, $params, $mime, basename($filePath));        } else {            $up = new ResumeUploader($upToken, $key, $file, $size, $params, $mime, $this->config);            $ret = $up->upload(basename($filePath));            fclose($file);            return $ret;        }    }    public static function trimParams($params)    {        if ($params === null) {            return null;        }        $ret = array();        foreach ($params as $k => $v) {            $pos1 = strpos($k, 'x:');            $pos2 = strpos($k, 'x-qn-meta-');            if (($pos1 === 0 || $pos2 === 0) && !empty($v)) {                $ret[$k] = $v;            }        }        return $ret;    }}
 |