Example #1
0
 private function upload($data)
 {
     $data = explode('|', $data);
     $ch = curl_init($data[1]);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
     $img = curl_exec($ch);
     $info = curl_getinfo($ch);
     if (curl_errno($ch) > 0) {
         curl_close($ch);
         echo "{$data[1]} | {$data[0]} Failed \n";
         return;
     }
     curl_close($ch);
     require_once APP_DIR . 'vendors/objectstorage/sdk.class.php';
     require_once APP_DIR . 'vendors/objectstorage/util/oss_util.class.php';
     $oss = new \ALIOSS(OSS_ACCESS_ID, OSS_ACCESS_KEY, OSS_ENDPOINT);
     $object = "avatar/{$data[0]}";
     $content = $img;
     $options = array('Content-Type' => $info['content_type'], 'content' => $content, 'length' => strlen($content));
     $res = $oss->upload_file_by_content(OSS_TEST_BUCKET, $object, $options);
     \OSSUtil::print_res($res, "{$data[1]} | {$data[0]}");
     if (!$this->user->update(['avatar' => time()], ['uid' => $data[0]])) {
         echo " database updated failed. \n";
     }
 }
Example #2
0
 public static function create_bucket()
 {
     $oss = self::get_oss_client();
     $bucket = self::get_bucket_name();
     $acl = ALIOSS::OSS_ACL_TYPE_PUBLIC_READ;
     $res = $oss->create_bucket($bucket, $acl);
     $msg = "创建bucket " . $bucket;
     OSSUtil::print_res($res, $msg);
 }
Example #3
0
 public static function upload_image($obj_path, $file_path)
 {
     $bucket = SampleUtil::get_bucket_name();
     $oss = SampleUtil::get_oss_client();
     SampleUtil::create_bucket();
     $object = $obj_path;
     /*%**************************************************************************************************************%*/
     // Multipart 相关的示例
     /**
      *通过multipart上传文件
      *如果上传的文件小于partSize,则直接使用普通方式上传
      */
     $filepath = $file_path;
     $options = array(ALIOSS::OSS_FILE_UPLOAD => $filepath, 'partSize' => 5242880);
     $res = $oss->create_mpu_object($bucket, $object, $options);
     $msg = "通过multipart上传文件";
     OSSUtil::print_res($res, $msg);
 }
Example #4
0
function get_lifecycle($oss, $bucket)
{
    sleep(1);
    $res = $oss->get_bucket_lifecycle($bucket);
    $msg = "获取lifecycle规则 bucket " . $bucket;
    OSSUtil::print_res($res, $msg);
    if ($res->isOK()) {
        SampleUtil::my_echo($res->body);
    } else {
        if ($res->status === 404) {
            SampleUtil::my_echo("无lifecycle规则");
        }
    }
}
Example #5
0
            $index++;
        }
    }
    if (empty($next_marker)) {
        break;
    }
}
echo "<hr/>";
/**
 *列出目录下的文件和子目录
 */
$prefix = '';
$marker = '';
$delimiter = '/';
$next_marker = '';
$maxkeys = 1000;
$index = 1;
$options = array('delimiter' => $delimiter, 'prefix' => $prefix, 'max-keys' => $maxkeys, 'marker' => $next_marker);
$res = $oss->list_object($bucket, $options);
$msg = "列出目录下的文件和子目录: " . $bucket;
OSSUtil::print_res($res, $msg);
if ($res->isOk()) {
    $body = $res->body;
    $xml = new SimpleXMLElement($body);
    foreach ($xml->Contents as $content) {
        SampleUtil::my_echo("文件列表: " . $content->Key);
    }
    foreach ($xml->CommonPrefixes as $content) {
        SampleUtil::my_echo("子目录列表: " . $content->Prefix);
    }
}
 /**
  * 分段上传函数
  * @param string $object 在OSS中存储的文件名称带上路径
  * @param string $upload_file 上传本地文件的名称带路径 根据给出的路径可以找到该文件
  */
 public function fenduan($object, $upload_file)
 {
     //分段上传
     $oss = $this;
     $bucket = $oss->bucket;
     //OSS空间名称
     $upload_id = $oss->init_multipart_upload($bucket, $object);
     $part_size = 5 * 1024 * 1024;
     //分块大小
     $upload_filesize = filesize($upload_file);
     $_SESSION['file_size'] = $upload_filesize;
     $pieces = $oss->get_multipart_counts($upload_filesize, $part_size);
     $response_upload_part = array();
     $upload_position = 0;
     $is_check_md5 = true;
     foreach ($pieces as $i => $piece) {
         $from_pos = $upload_position + (int) $piece[$oss::OSS_SEEK_TO];
         $to_pos = (int) $piece[$oss::OSS_LENGTH] + $from_pos - 1;
         $up_options = array($oss::OSS_FILE_UPLOAD => $upload_file, $oss::OSS_PART_NUM => $i + 1, $oss::OSS_SEEK_TO => $from_pos, $oss::OSS_LENGTH => $to_pos - $from_pos + 1, $oss::OSS_CHECK_MD5 => $is_check_md5);
         if ($is_check_md5) {
             $content_md5 = OSSUtil::get_content_md5_of_file($upload_file, $from_pos, $to_pos);
             $up_options[$oss::OSS_CONTENT_MD5] = $content_md5;
         }
         //2. 将每一分片上传到OSS
         $response_upload_part[] = $oss->upload_part($bucket, $object, $upload_id, $up_options);
     }
     $upload_parts = array();
     $upload_part_result = true;
     foreach ($response_upload_part as $i => $res) {
         $upload_part_result = $upload_part_result && $res->isOk();
         $msg = "上传分块到 /" . $bucket . "/" . $object . " upload id is: " . $upload_id;
         if (!$upload_part_result) {
             throw new OSS_Exception('部分上传没有成功!');
         }
         $upload_parts[] = array('PartNumber' => $i + 1, 'ETag' => (string) $res->header['etag']);
     }
     // var_dump($upload_parts);
     /**
      *获取Bucket内所有分块上传事件
      */
     $options = array('key-marker' => "", 'max-uploads' => 1000, 'upload-id-marker' => "");
     $res = $oss->list_multipart_uploads($bucket, $options);
     $msg = "获取Bucket内所有分块上传事件";
     OSSUtil::print_res($res, $msg);
     if ($res->isOK()) {
         SampleUtil::my_echo($res->body);
     }
     /**
      *获取所有已上传的块信息
      */
     $res = $oss->list_parts($bucket, $object, $upload_id);
     $msg = "获取所有已上传的块信息";
     OSSUtil::print_res($res, $msg);
     if ($res->isOK()) {
         SampleUtil::my_echo($res->body);
     }
     $res = $oss->complete_multipart_upload($bucket, $object, $upload_id, $upload_parts);
     return $res->status;
 }