| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 | 
							- <?php
 
- namespace Qiniu\Storage;
 
- use Qiniu\Config;
 
- use Qiniu\Http\HttpClient;
 
- use Qiniu\Http\RequestOptions;
 
- use Qiniu\Storage\ResumeUploader;
 
- use Qiniu\Storage\FormUploader;
 
- /**
 
-  * 主要涉及了资源上传接口的实现
 
-  *
 
-  * @link http://developer.qiniu.com/docs/v6/api/reference/up/
 
-  */
 
- final class UploadManager
 
- {
 
-     private $config;
 
-     /**
 
-      * @var RequestOptions
 
-      */
 
-     private $reqOpt;
 
-     /**
 
-      * @param Config|null $config
 
-      * @param RequestOptions|null $reqOpt
 
-      */
 
-     public function __construct(Config $config = null, RequestOptions $reqOpt = null)
 
-     {
 
-         if ($config === null) {
 
-             $config = new Config();
 
-         }
 
-         $this->config = $config;
 
-         if ($reqOpt === null) {
 
-             $reqOpt = new RequestOptions();
 
-         }
 
-         $this->reqOpt = $reqOpt;
 
-     }
 
-     /**
 
-      * 上传二进制流到七牛
 
-      *
 
-      * @param string $upToken 上传凭证
 
-      * @param string $key 上传文件名
 
-      * @param string $data 上传二进制流
 
-      * @param array<string, string> $params 自定义变量,规格参考
 
-      *                    http://developer.qiniu.com/docs/v6/api/overview/up/response/vars.html#xvar
 
-      * @param string $mime 上传数据的mimeType
 
-      * @param string $fname
 
-      * @param RequestOptions $reqOpt
 
-      * @return array    包含已上传文件的信息,类似:
 
-      *                                              [
 
-      *                                                  "hash" => "<Hash string>",
 
-      *                                                  "key" => "<Key string>"
 
-      *                                              ]
 
-      */
 
-     public function put(
 
-         $upToken,
 
-         $key,
 
-         $data,
 
-         $params = null,
 
-         $mime = 'application/octet-stream',
 
-         $fname = "default_filename",
 
-         $reqOpt = null
 
-     ) {
 
-         $reqOpt = $reqOpt === null ? $this->reqOpt : $reqOpt;
 
-         $params = self::trimParams($params);
 
-         return FormUploader::put(
 
-             $upToken,
 
-             $key,
 
-             $data,
 
-             $this->config,
 
-             $params,
 
-             $mime,
 
-             $fname,
 
-             $reqOpt
 
-         );
 
-     }
 
-     /**
 
-      * 上传文件到七牛
 
-      *
 
-      * @param string $upToken 上传凭证
 
-      * @param string $key 上传文件名
 
-      * @param string $filePath 上传文件的路径
 
-      * @param array<string, mixed> $params 定义变量,规格参考
 
-      *                                     http://developer.qiniu.com/docs/v6/api/overview/up/response/vars.html#xvar
 
-      * @param boolean $mime 上传数据的mimeType
 
-      * @param string $checkCrc 是否校验crc32
 
-      * @param string $resumeRecordFile 断点续传文件路径 默认为null
 
-      * @param string $version 分片上传版本 目前支持v1/v2版本 默认v1
 
-      * @param int $partSize 分片上传v2字段 默认大小为4MB 分片大小范围为1 MB - 1 GB
 
-      *
 
-      * @return array<string, mixed> 包含已上传文件的信息,类似:
 
-      *                                              [
 
-      *                                                  "hash" => "<Hash string>",
 
-      *                                                  "key" => "<Key string>"
 
-      *                                              ]
 
-      * @throws \Exception
 
-      */
 
-     public function putFile(
 
-         $upToken,
 
-         $key,
 
-         $filePath,
 
-         $params = null,
 
-         $mime = 'application/octet-stream',
 
-         $checkCrc = false,
 
-         $resumeRecordFile = null,
 
-         $version = 'v1',
 
-         $partSize = config::BLOCK_SIZE,
 
-         $reqOpt = null
 
-     ) {
 
-         $reqOpt = $reqOpt === null ? $this->reqOpt : $reqOpt;
 
-         $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),
 
-                 $reqOpt
 
-             );
 
-         }
 
-         $up = new ResumeUploader(
 
-             $upToken,
 
-             $key,
 
-             $file,
 
-             $size,
 
-             $params,
 
-             $mime,
 
-             $this->config,
 
-             $resumeRecordFile,
 
-             $version,
 
-             $partSize,
 
-             $reqOpt
 
-         );
 
-         $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;
 
-     }
 
- }
 
 
  |