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"; } }
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); }
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); }
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规则"); } } }
$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; }