Storage¶
服务概述¶
Storage 是新浪云为开发者提供的分布式对象存储服务,可以用来保存资源文件、备份数据等。
创建 Bucket¶
Bucket 是一个容器,这个容器中可以存放各种数据(Object)。上传任何数据之前需先创建 Bucket。您可以在控制台 『应用/存储与CDN/Storage 』中创建 Bucket 。
Bucket 中存储的内容叫做 Object ,可以是文本、多媒体、二进制等任意类型的数据文件。
访问控制¶
Bucket 可以根据业务需求设置不同的访问权限。按照权限大小可以有以下几种:
私有
Bucket 的 Object 是完全私有的,可以用来保存应用的备份数据等。私有 Bucket 中的数据只可以通过 SDK 读取或者通过 SDK 中的 getTempUrl 获取一个临时的访问 URL 来让用户访问,这个 URL 有过期时间,到期后 URL 会失效,无法再访问。例:http://myapp-mybucket.stor.sinaapp.com/path/to/object?temp_url_sig=1e5c3d0a6af2ede4e327a44a7ef4a72e3423f1fb&temp_url_expires=1472711334
公开+防盗链
对于公有的 Bucket 也可以开启防盗链、设置只允许自己的应用域名来访问 Bucket 中的 Object。服务器会根据 HTTP 请求里的 Referer 头来判断一个请求是否在允许的域名里,不在会 302 跳转到您设置的跳转地址。
公开
用户可以直接通过 Object 的公开 URL 来访问。 例:http://myapp-mybucket.stor.sinaapp.com/path/to/object
浏览器缓存 目前几乎所有的浏览器都有本地缓存机制。开发者可以通过控制 Object 的浏览器缓存过期时间,也就是设置 Object 的 HTTP 响应的 Cache-Control 和 Expires 这两个 HTTP Header,来提升 Web 应用的性能,减轻服务端的资源消耗。如果用户没有设置 Bucket 或者 Object 的浏览器缓存过期时间,Storage 默认的时间是 2 小时。
上传、下载、管理¶
创建完 Bucket 之后,你可以通过以下方法以及 API 接口往 Bucket 中存数据。
Web¶
你可以直接通过 Storage 的 Web 控制台来管理创建的 Bucket。
FTP¶
Storage 提供了一个 FTP 管理接口,您可以使用任意 FTP 客户端来操作。FTP 服务器的连接信息如下:
- 地址: ftp.sinas3.com
- 端口: 10021
- 用户名:应用的 AccessKey
- 密码:应用的 SecretKey
Cyberduck¶
在 Windows 和 Mac 系统下面,你可以使用 Cyberduck 来操作 Storage。
下载地址: http://cyberduck.io
打开 Cyberduck,点击左上角的“新建连接”。
在弹出的对话框中填写连接相关信息:
类型:Swift。
服务器:auth.sinas3.com
端口:443(默认)
用户名:应用 AccessKey(在应用“汇总信息”页面中查看)
密码:应用 SecretKey(在应用“汇总信息”页面中查看)
填写完成后点击连接。如果弹出 auth.sinas3.com,api.sinas3.com 相关证书问题,请选择信任。
有些版本的 Cyberduck 会弹出下面的对话框,忽略,直接点登录就可以了。
连接完成后,将会看到该应用 Storage 的所有 Bucket 列表:
操作:双击 Bucket 名称,可进入 Bucket,列出文件和文件夹,此时,可进行文件的上传、下载、以及删除操作。
Swift 命令行工具¶
注解
以下文档以 Ubuntu 系统为例。
首先,安装客户端。
$ apt-get install python-pip;
$ pip install python-swiftclient;
安装完成后,你可以通过 swift 这个命令来对应用的 Storage 进行操作。在每次使用 swift 之前,请首先执行以下命令将以下配置信息加入到环境变量中去。
$ export ST_AUTH='https://auth.sinas3.com/v1.0'
$ export ST_USER='AccessKey'
$ export ST_KEY='SecretKey'
获取访问 URL¶
你可以在 Storage 控制台中直接在对应的 Object 上右击,选择“复制链接”来获取 Object 的访问 URL,如果是公开的 Bucket,URL 为 Object 的公开 URL,如果是私有 Bucket,该 URL 为一个 5 分钟后过期的临时 URL。
在代码里,你也可以通过 SDK 中的 getURL 或者 getTempurl 来获取 Object 的公开 URL和临时 URL。
File Wrap¶
Java Runtime对File相关类进行了包装,这样开发者可以直接调用Java的File相关的类来操作Storage。
使用File操作SAE的Storage服务非常简单,和普通的IO操作没什么差别,唯一不同的是你只需要在File相关类的filePath的构造参数前加上 saestor://domain (区分大小写),其中 saestor:// 是固定字符串,而domain则是Storage对应的域名。
//向域名为domain写入一个test.txt文件,文件内容为“测试内容”
FileOutputStream outputStream = new FileOutputStream("saestor://domain/test.txt");
Writer writer = new OutputStreamWriter(outputStream);
writer.write("测试内容");
writer.close();
//读storage中域名为domain,文件名为test.txt的文件
FileInputStream inputStream = new FileInputStream("saestor://domain/test.txt");
Reader reader = new InputStreamReader(inputStream);
StringBuilder filetext = new StringBuilder();
int tempchar;
while ((tempchar = reader.read()) != -1) {
filetext.append((char) tempchar);
}
reader.close();