Object Storage Service(OSS) 的客户端类,封装了用户通过OSS API对OSS服务的各种操作, 用户通过OssClient实例可以进行Bucket,Object,MultipartUpload, ACL等操作,具体 的接口规则可以参考官方OSS API文档
Пример #1
0
 /**
  * 当个上传文件并返回上传的URL地址
  * @param $filename string 要保存的文件名称 注意如果存在目录的话
  * @param $filepath string 文件在服务器(本地的绝对或者相对路径,这里的服务器实际上是本地)上的路径
  * @return bool or url
  */
 public function upload2AliyunSdkSingle($filename, $filepath)
 {
     $dir = C('ALIYUN_DIR');
     //保存在阿里云的基本路径
     $endpoint = C('ALIYUN_endpoint');
     //阿里云的节点信息 请自行查阅本字段意义
     $midStr = 'upload/' . date('y') . '/' . date('m') . '/' . date('d') . '/';
     //这里是为了保存的路径暂时以当前时间为准
     try {
         $ossClient = new OssClient(C('ALIYUN_KeyId'), C('ALIYUN_KeySecret'), $endpoint);
         //这里要放入你从阿里云获得的key和secret这里我做成了配置项读取
     } catch (OssException $e) {
         print $e->getErrorMessage();
     }
     $ossClient->setTimeout(3600);
     // 设置请求超时时间
     $ossClient->setConnectTimeout(10);
     //设置连接超时时间
     try {
         $ossClient->uploadFile(C('ALIYUN_bucket'), $dir . $midStr . $filename, $filepath);
     } catch (OssException $e) {
         return false;
     }
     $ret = str_replace('http://', 'http://' . C('ALIYUN_bucket') . '.', $endpoint . '/' . $dir . $midStr . $filename);
     //返回拼接的http url
     return $ret;
 }
 public function testConstrunct8()
 {
     try {
         $ossClient = new OssClient(Config::OSS_ACCESS_ID, Config::OSS_ACCESS_KEY, "http://123.123.123.1", true);
         $ossClient->listBuckets();
         $this->assertFalse(true);
     } catch (OssException $e) {
     }
 }
/**
 * 删除bucket的Logging配置
 *
 * @param OssClient $ossClient OssClient实例
 * @param string $bucket 存储空间名称
 * @return null
 */
function deleteBucketLogging($ossClient, $bucket)
{
    try {
        $ossClient->deleteBucketLogging($bucket);
    } catch (OssException $e) {
        printf(__FUNCTION__ . ": FAILED\n");
        printf($e->getMessage() . "\n");
        return;
    }
    print __FUNCTION__ . ": OK" . "\n";
}
/**
 * 删除bucket的防盗链配置
 * Referer白名单不能直接清空,只能通过重新设置来覆盖之前的规则。
 *
 * @param OssClient $ossClient OssClient实例
 * @param string $bucket 存储空间名称
 * @return null
 */
function deleteBucketReferer($ossClient, $bucket)
{
    $refererConfig = new RefererConfig();
    try {
        $ossClient->putBucketReferer($bucket, $refererConfig);
    } catch (OssException $e) {
        printf(__FUNCTION__ . ": FAILED\n");
        printf($e->getMessage() . "\n");
        return;
    }
    print __FUNCTION__ . ": OK" . "\n";
}
 /**
  * Get the signed download url of a file.
  *
  * @param string $path
  * @param int    $expires
  * @param string $host_name
  * @param bool   $use_ssl
  * @return string
  */
 public function getSignedDownloadUrl($path, $expires = 3600, $host_name = '', $use_ssl = false)
 {
     $object = $this->applyPathPrefix($path);
     $url = $this->client->signUrl($this->bucket, $object, $expires);
     if (!empty($host_name) || $use_ssl) {
         $parse_url = parse_url($url);
         if (!empty($host_name)) {
             $parse_url['host'] = $this->bucket . '.' . $host_name;
         }
         if ($use_ssl) {
             $parse_url['scheme'] = 'https';
         }
         $url = (isset($parse_url['scheme']) ? $parse_url['scheme'] . '://' : '') . (isset($parse_url['user']) ? $parse_url['user'] . (isset($parse_url['pass']) ? ':' . $parse_url['pass'] : '') . '@' : '') . (isset($parse_url['host']) ? $parse_url['host'] : '') . (isset($parse_url['port']) ? ':' . $parse_url['port'] : '') . (isset($parse_url['path']) ? $parse_url['path'] : '') . (isset($parse_url['query']) ? '?' . $parse_url['query'] : '');
     }
     return $url;
 }
Пример #6
0
 public function tearDown()
 {
     if (!$this->ossClient->doesBucketExist($this->bucket)) {
         return;
     }
     $objects = $this->ossClient->listObjects($this->bucket, array('max-keys' => 1000, 'delimiter' => ''))->getObjectList();
     $keys = array();
     foreach ($objects as $obj) {
         $keys[] = $obj->getKey();
     }
     if (count($keys) > 0) {
         $this->ossClient->deleteObjects($this->bucket, $keys);
     }
     $uploads = $this->ossClient->listMultipartUploads($this->bucket)->getUploads();
     foreach ($uploads as $up) {
         $this->ossClient->abortMultipartUpload($this->bucket, $up->getKey(), $up->getUploadId());
     }
     $this->ossClient->deleteBucket($this->bucket);
 }
Пример #7
0
/**
 * 判断object是否存在
 *
 * @param OssClient $ossClient OssClient实例
 * @param string $bucket 存储空间名称
 * @return null
 */
function doesObjectExist($ossClient, $bucket)
{
    $object = "oss-php-sdk-test/upload-test-object-name.txt";
    try {
        $exist = $ossClient->doesObjectExist($bucket, $object);
    } catch (OssException $e) {
        printf(__FUNCTION__ . ": FAILED\n");
        printf($e->getMessage() . "\n");
        return;
    }
    print __FUNCTION__ . ": OK" . "\n";
    var_dump($exist);
}
Пример #8
0
/**
 * 列出用户所有的Bucket
 *
 * @param OssClient $ossClient OssClient实例
 * @return null
 */
function listBuckets($ossClient)
{
    $bucketList = null;
    try {
        $bucketListInfo = $ossClient->listBuckets();
    } catch (OssException $e) {
        printf(__FUNCTION__ . ": FAILED\n");
        printf($e->getMessage() . "\n");
        return;
    }
    print __FUNCTION__ . ": OK" . "\n";
    $bucketList = $bucketListInfo->getBucketList();
    foreach ($bucketList as $bucket) {
        print $bucket->getLocation() . "\t" . $bucket->getName() . "\t" . $bucket->getCreatedate() . "\n";
    }
}
Пример #9
0
 public function testConstrunct9()
 {
     try {
         $accessKeyId = ' ' . getenv('OSS_ACCESS_KEY_ID') . ' ';
         $accessKeySecret = ' ' . getenv('OSS_ACCESS_KEY_SECRET') . ' ';
         $endpoint = ' ' . getenv('OSS_ENDPOINT') . '/ ';
         $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false);
         $ossClient->listBuckets();
     } catch (OssException $e) {
         $this->assertFalse(true);
     }
 }
Пример #10
0
 /**
  * @inheritDoc
  */
 public function __construct($accessKeyId, $accessKeySecret, $endpoint, $isCName, $securityToken)
 {
     parent::__construct($accessKeyId, $accessKeySecret, $endpoint, $isCName, $securityToken);
 }
Пример #11
0
use OSS\Http\RequestCore;
use OSS\OssClient;
use OSS\Core\OssException;
const OSS_ACCESS_ID = '您从OSS获得的AccessKeyId';
const OSS_ACCESS_KEY = '您从OSS获得的AccessKeySecret';
const OSS_ENDPOINT = 'OSS的域名,如 oss-cn-hangzhou.aliyuncs.com';
$bucket = "您在OSS上的Bucket";
//绑定OSS的URL,前面要加http,比如 http://www.yoursite.com/
$urls = '您访问OSS的地址/';
//读取图片base64编码格式
$base64_image_content = file_get_contents("php://input");
if (preg_match('/^(data:\\s*image\\/(\\w+);base64,)/', $base64_image_content, $result)) {
    $type = $result[2];
    if ($type != "png") {
        exit("0");
    }
}
$files = time();
//传到OSS
$base64_body = substr(strstr($base64_image_content, ','), 1);
$object = "face/" . $files . ".png";
$content = base64_decode($base64_body);
$ossClient = new OssClient(OSS_ACCESS_ID, OSS_ACCESS_KEY, OSS_ENDPOINT, false);
try {
    $ossClient->putObject($bucket, $object, $content);
} catch (OssException $e) {
    print $e->getMessage();
}
session_start();
$_SESSION['face'] = $urls . "face/" . $files . ".png";
echo "1";
Пример #12
0
 public function postFaceUpload(Request $request)
 {
     $content = $request->getContent();
     $requestUri = $request->getRequestUri();
     $authorization = @base64_decode($request->server('HTTP_AUTHORIZATION'));
     $ossPubKeyUrl = @base64_decode($request->server('HTTP_X_OSS_PUB_KEY_URL'));
     $pubKey = @file_get_contents($ossPubKeyUrl);
     $pos = strpos($requestUri, '?');
     if (false === $pos) {
         $authString = urldecode($requestUri) . "\n" . $content;
     } else {
         $authString = urldecode(substr($requestUri, 0, $pos)) . substr($requestUri, $pos, strlen($requestUri) - $pos) . "\n" . $content;
     }
     if ($pubKey && openssl_verify($authString, $authorization, $pubKey, OPENSSL_ALGO_MD5)) {
         try {
             $id = decrypt($request->input('identifier'));
             $user = User::find($id);
             $config = config('aliyun.oss.archimore');
             $oss = new OssClient($config['access_key_id'], $config['access_key_secret'], $config['endpoint'], $config['is_cname'], $config['security_token']);
             $user->face && $oss->deleteObject('archimore', $user->face);
             $user->face = $request->input('object');
             $user->save();
             $data = ['status' => true, 'message' => '头像设置成功', 'face' => $config['image_base_url'] . $request->input('object') . $config['image_style_separator'] . 'face-middle'];
         } catch (\Exception $e) {
             $data = ['status' => false, 'message' => '头像设置失败'];
         }
     } else {
         $data = ['status' => false, 'message' => '头像上传失败'];
     }
     $data = json_encode($data);
     return response($data, 200, ['Content-Type' => 'application/json', 'Content-Length' => strlen($data)]);
 }
Пример #13
0
<?php

require_once './autoload.php';
use OSS\OssClient;
use OSS\Core\OssException;
$time = $_GET["time"];
$images = $_GET["images"];
$imagesarr = explode(",", $images);
$imagescount = count($imagesarr);
if ($imagescount >= 1) {
    $accesskeyid = "zqFGz1zqtNXd7e49";
    $accesskeysecret = "QyMtSHSYO9nPXm8O26Ls5jtueoEBFv";
    $endpoint = "oss-cn-qingdao.aliyuncs.com";
    $bucketname = "jzsnet";
    try {
        $ossClient = new OssClient($accesskeyid, $accesskeysecret, $endpoint);
        for ($i = 0; $i < $imagescount; $i++) {
            $realimage = $imagesarr[$i];
            $realimagepath = __DIR__ . "/ueditor/php/upload/image/" . $time . "/" . $realimage;
            $ossClient->uploadFile($bucketname, $realimage, $realimagepath);
        }
    } catch (OssException $e) {
        print $e->getMessage();
    }
}
Пример #14
0
     $postResult = curl_post($serverUrl, array('action' => 'delete', 'filedir' => $fileDir, 'filename' => $ming, 'token' => $deleteToken));
     if ($postResult == "ok") {
         echo "ok.删除成功";
         deleteShare($key1, $con);
     } else {
         echo "bad.删除失败,但上传记录将被删除";
         deleteShare($key1, $con);
     }
     break;
 case oss:
     $accessKeyId = $ak;
     $accessKeySecret = $sk;
     $endExplode = explode(".", $serverUrl);
     $endpoint = "http://" . $endExplode[1] . "." . $endExplode[2] . "." . $endExplode[3];
     try {
         $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false);
     } catch (OssException $e) {
         print "bad.无法连接至存储服务器";
     }
     $object = $ming;
     try {
         $ossClient->deleteObject($bucketName, $object);
     } catch (OssException $e) {
         echo "bad.删除失败,但上传记录将被删除";
         deleteShare($key1, $con);
         return;
     }
     echo "ok.删除成功";
     deleteShare($key1, $con);
     break;
 case 'upyun':
Пример #15
0
 $ymd = date("Ymd");
 $save_path .= $ymd . "/";
 $save_url .= $ymd . "/";
 if (!file_exists($save_path)) {
     mkdir($save_path);
 }
 //新文件名
 $new_file_name = date("YmdHis") . '_' . rand(10000, 99999) . '.' . $file_ext;
 //移动文件
 $file_path = $save_path . $new_file_name;
 if (move_uploaded_file($tmp_name, $file_path) === false) {
     alert("上传文件失败。");
 }
 $object = "attached/" . $dir_name . "/" . $ymd . "/" . $new_file_name;
 $content = $file_path;
 $ossClient = new OssClient(OSS_ACCESS_ID, OSS_ACCESS_KEY, OSS_ENDPOINT, false);
 try {
     $ossClient->uploadFile($bucket, $object, $content);
 } catch (OssException $e) {
     print $e->getMessage();
 }
 /*清空本地的存储文件及目录
 unlink($file_path);
 rmdir("./tmp/".$dir_name."/".$ymd);
 rmdir("./tmp/".$dir_name);
 */
 //完整的URL路径
 $file_url = $urls . $save_url . $new_file_name;
 header('Content-type: text/html; charset=UTF-8');
 $json = new Services_JSONs();
 echo $json->encode(array('error' => 0, 'url' => $file_url));
/**
 * 按照目录上传文件
 *
 * @param OssClient $ossClient OssClient
 * @param string $bucket 存储空间名称
 *
 */
function uploadDir($ossClient, $bucket)
{
    $localDirectory = ".";
    $prefix = "samples/codes";
    try {
        $ossClient->uploadDir($bucket, $prefix, $localDirectory);
    } catch (OssException $e) {
        printf(__FUNCTION__ . ": FAILED\n");
        printf($e->getMessage() . "\n");
        return;
    }
    printf(__FUNCTION__ . ": completeMultipartUpload OK\n");
}
 public function setUp()
 {
     $this->bucket = Common::getBucketName();
     $this->ossClient = Common::getOssClient();
     $this->ossClient->createBucket($this->bucket);
 }
Пример #18
0
<?php 
header("Content-type: text/html; charset=utf-8");
header('Access-Control-Allow-Origin:*');
require_once '/aliyun-oss-php-sdk-master/autoload.php';
use OSS\OssClient;
use OSS\Core\OssException;
$accessKeyId = "7LdVru52GybHb1DB";
$accessKeySecret = "zWrGBwmcgWxgBtdrGlPpEfyacRmuAd";
$endpoint = "oss-cn-shanghai.aliyuncs.com";
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
$ossClient->setTimeout(3600);
$ossClient->setConnectTimeout(5);
function create_guid()
{
    $charid = strtoupper(md5(uniqid(mt_rand(), true)));
    $uuid = substr($charid, 0, 8) . substr($charid, 8, 4) . substr($charid, 12, 4) . substr($charid, 16, 4);
    return $uuid;
}
function WriteLog($info)
{
    $file = 'F:\\wampserver\\setup\\wamp\\www\\uploadmedid.txt';
    file_put_contents($file, $info, FILE_APPEND);
}
function test_input($data)
{
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
Пример #19
0
/**
 * 生成PutObject的签名url,主要用于私有权限下的写访问控制, 用户可以利用生成的signedUrl
 * 从文件上传文件
 *
 * @param OssClient $ossClient OssClient实例
 * @param string $bucket 存储空间名称
 * @throws OssException
 */
function getSignedUrlForPuttingObjectFromFile($ossClient, $bucket)
{
    $file = __FILE__;
    $object = "test/test-signature-test-upload-and-download.txt";
    $timeout = 3600;
    $options = array('Content-Type' => 'txt');
    try {
        $signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "PUT", $options);
    } catch (OssException $e) {
        printf(__FUNCTION__ . ": FAILED\n");
        printf($e->getMessage() . "\n");
        return;
    }
    print __FUNCTION__ . ": signedUrl: " . $signedUrl . "\n";
    $request = new RequestCore($signedUrl);
    $request->set_method('PUT');
    $request->add_header('Content-Type', 'txt');
    $request->set_read_file($file);
    $request->set_read_stream_size(filesize($file));
    $request->send_request();
    $res = new ResponseCore($request->get_response_header(), $request->get_response_body(), $request->get_response_code());
    if ($res->isOK()) {
        print __FUNCTION__ . ": OK" . "\n";
    } else {
        print __FUNCTION__ . ": FAILED" . "\n";
    }
}