开放存储服务(OpenStorageService,简称OSS),是阿里云对外提供的海量,安全,低成本,高可靠的云存储服务。用户可以通过简单的API(REST方式的接口),在任何时间、任何地点、任何互联网设备上进行数据上传和下载。

首先、登录阿里云首页http://www.aliyun.com/ 免费开通服务。

开通以后,进入"管理控制台"--进入"开发存储服务OSS",进入到控制台。

其次、下载SDK http://bbs.aliyun.com/job.php?action=download&aid=41064

解压后在samples文件夹内新建一个index.php文件

<?php

require_once dirname(__DIR__).'/aliyun.php';

use Aliyun\OSS\OSSClient;

// 创建一个连接阿里云开放存储的客户端
function createClient($accessKeyId, $accessKeySecret) {
return OSSClient::factory(array(
'AccessKeyId' => $accessKeyId, //AccessKeyId在“用户中心”--“我的服务”--“安全认证”
'AccessKeySecret' => $accessKeySecret,
));
} //获取所有bucket //bucket是水桶的意思,可以理解为容器,里面装了各种各样的东西,也就是key=>value function listBuckets(OSSClient $client) {
$buckets = $client->listBuckets();
foreach ($buckets as $bucket) {
echo 'Bucket: ' . $bucket->getName() . "\n";
}
} //新建bucket
function createBucket(OSSClient $client, $bucket) {
$client->createBucket(array( 'Bucket' => $bucket, ));
}
// Sample of get Bucket Acl
function getBucketAcl(OSSClient $client, $bucket) {
$acl = $client->getBucketAcl(array( 'Bucket' => $bucket, ));
$grants = $acl->getGrants(); echo $grants[0];
} //获取bucket的所有key
function getBucketKey(OSSClient $client, $bucket){
$objectListing = $client->listObjects(array( 'Bucket' => $bucket, ));
foreach ($objectListing->getObjectSummarys() as $objectSummary) {
$objectSummary->getKey();
}
}
//向某个bucket上传内容,可以字符串或者文件
function upload(OSSClient $client, $bucket,$key,$content,$type){
isset($type)?$type:0;
if($type == 0){
$type = gettype($content);
//如果上传内容为数组或者对象,需要进行序列化
if($type == "array" || $type == "object") {
$content = serialize($content);
}
$client->putObject(array( 'Bucket' => $bucket, 'Key' => $key, 'Content' => $content, ));
}else{
$client->putObject(
array( 'Bucket' => $bucket,
'Key' => $key,
'Content' => fopen($content, 'r'),
'ContentLength' => filesize($content),
));
}
} //下载文件
function download(OSSClient $client, $bucket, $key){
$object = $client->getObject(
array( 'Bucket' => $bucket,
'Key' => $key,
));
echo (string)$object; }
// 删除bucket
function deleteBucket(OSSClient $client, $bucket) {
$client->deleteBucket(
array( 'Bucket' => $bucket, ));
}
$keyId = '5WTGMhX6mQX6Q***';
$keySecret = 'VDISRNuHEY0THb9v1RYv08vj4lc***';
$client = createClient($keyId, $keySecret);
$bucket = 'xiaoqiangbucket';
$key = rand(1,1000); $content = "this is xiaoqiang's content";
//$content = array(1,2,3,4,5,6,7,8); listBuckets($client); //显示所有bucket createBucket($client, $bucket); //新建一个bucket
getBucketAcl($client, $bucket);
download($client, $bucket, $key); //下载key为$key的content
upload($client, $bucket, $key, $content,0); //上传$key=>$content到bucket
var_dump(getBucketKey($client, $bucket));//显示bucket内的所有key
//deleteBucket($client, $bucket); //删除bucket

至此在客户端实现了控制台的所有操。

基于PHP实现阿里云开放存储服务的更多相关文章

  1. 开个坑, 写个阿里云开放储存服务(OSS)的C++版SDK以及客户端

    这应该是继我研究手册QQ协议后的第2个稍微正式一点的网络程序, 不只是Scoket套接字编程, 还涉及到更多的HTTP协议知识! 阿里云开放储存服务OSS官方已经提供了不少SDK, 包括PHP/Pyt ...

  2. 阿里云对象存储服务,OSS使用经验总结,图片存储,分页查询

    阿里云OSS-使用经验总结,存储,账号-权限,分页,缩略图,账号切换 最近项目中,需要使用云存储,最后选择了阿里云-对象存储服务OSS.总的来说,比较简单,但是仍然遇到了几个问题,需要总结下. 1.O ...

  3. 阿里云之OSS 开放存储服务开发笔记

    在使用云服务以后,你不用考虑他是否能承受压力,而是费用.不要考虑是否被攻击,而是他的API实现.本人开发阿里云服务也走了些崎岖之路,写下以备忘之. 阿里云的开放存储服务可以提供文件的存储服务,开放了上 ...

  4. apache中的https设置基于阿里云免费ssl服务

    环境是:debian7+apache2.2+阿里云免费ssl服务,站点以前的http已经在运行了, 1.开通阿里云免费SSL&DNS解析配置 购买位置:打开阿里云找到“产品”-“安全”-“CA ...

  5. 阿里云对象存储OSS与文件存储NAS的区别

    一.简介 应用场景:选择一款存储产品,面向文档数据的存取,不会涉及到数据处理. 产品选型主要从OSS和NAS中选择一款,满足文档存储的需求. 二.NAS优缺点 NAS 是一种采用直接与网络介质相连的特 ...

  6. 阿里云文件存储CPFS正式商业化,提供云上高性能并行文件系统

    2018年3月份,阿里云推出文件存储CPFS产品.在经过近一年的上线公测后,CPFS即将迎来商业化,将为更多的客户提供云上高性能的并行文件存储. 坚如磐石的高性能计算存储 文件存储CPFS针对计算密集 ...

  7. 为数据计算提供强力引擎,阿里云文件存储HDFS v1.0公测发布

    在2019年3月的北京云栖峰会上,阿里云正式推出全球首个云原生HDFS存储服务—文件存储HDFS,为数据分析业务在云上提供可线性扩展的吞吐能力和免运维的快速弹性伸缩能力,降低用户TCO.阿里云文件存储 ...

  8. 阿里云对象存储 OSS 应用服务器搭建代码

    背景说明 最近做一个APP客户端图片直传阿里云OSS的服务,需要在后台开一个阿里云的OSSToken获取的接口. 阿里云官方文档地址:快速搭建移动应用直传服务. 略过移动端说明,直接看服务端的. 不是 ...

  9. ThinkPHP3.2.3框架下接入阿里云短信服务接口实现:注册登录

    首先介绍下短信注册登录流程: 注册页面点击获取手机号验证码按钮,用jquery的click事件POST或GET方法把手机号发送到后台控制器: 后台控制器创建函数,收到手机号后生成随机码,例如:6位的随 ...

随机推荐

  1. android控件

    ---恢复内容开始--- (1)文字大小的类型 px.dip.sp.pt.in.mm (2)TextView控件 超链接显示 属性autoLink="all" (3)EditTex ...

  2. [转]WinForms GridListEditor - How to restore values in the auto filter row

    http://dennisgaravsky.blogspot.hk/2016/05/winforms-gridlisteditor-how-to-restore.html using System; ...

  3. Spring声明式事务管理基于tx/aop命名空间

    目的:通过Spring AOP 实现Spring声明式事务管理; Spring支持编程式事务管理和声明式事务管理两种方式. 而声明式事务管理也有两种常用的方式,一种是基于tx/aop命名空间的xml配 ...

  4. Perl的多进程框架(watcher-worker)

    关于perl的多进程,大家可能马上会想到Parallel::ForkManager这个模块.但是今天我们试着自己动手写一个类似的框架:) 该多进程开发模型从开源服务器框架Lighttpd发展而来,核心 ...

  5. T4模版基础例子

    <#@ template debug="false" hostspecific="true" language="C#" #> ...

  6. 如何在ASP.NET 5上搭建基于TypeScript的Angular2项目

    一.前言 就在上月,公司的一个同事建议当前的前端全面改用AngularJs进行开发,而我们采用的就是ASP.NET 5项目,原本我的计划是采用TypeScript直接进行Angular2开发.所以借用 ...

  7. 细心很重要---猜猜这个SQL执行的什么意思

    今天在帮客户做语句优化的时候,突然遇到这样一个语句,类似下面的例子(原语句是个update) 例子中使用AdventureWorks数据中的两个表. productID 是[Production].[ ...

  8. SQL SERVER 2012 只能识别20个CPU的问题

    背景 最近在给客户优化时时候发现客户的虚拟机环境分配了32C 但是只能识别20个,物理机64C,64G内存,本来没什么,CPU利用率在40%左右,但是优化后同时增加了 CPU和内存的分配,CPU32增 ...

  9. dijit样式定制(三)Button、RadioButton、CheckBox

    dijit.form.DropDownButton dijit的button中除了ComboButton使用table布局外,其他的button都是用span嵌套布局,下图中可看一下button的主要 ...

  10. 基于百度翻译API开发属于自己的翻译工具

    你是否每天使用着网页翻译工具?你是否遇到过这种情况,上网过程中遇到一个很长的单词但是又不能复制,要开两个浏览器,一个打开百度翻译,照着另一个网页输入单词?你安装了各种翻译软件后,又删除,只因忍受不了那 ...