Table of Contents

上一个主题

Memcached

下一个主题

KVDB

本页

Storage

服务概述

Storage 是新浪云为开发者提供的分布式对象存储服务,可以用来保存资源文件、备份数据等。

创建 Bucket

Bucket 是一个容器,这个容器中可以存放各种数据(Object)。上传任何数据之前需先创建 Bucket。您可以在控制台 『应用/存储与CDN/Storage 』中创建 Bucket 。

../../_images/storage-create-bucket.png

Bucket 中存储的内容叫做 Object ,可以是文本、多媒体、二进制等任意类型的数据文件。

访问控制

Bucket 可以根据业务需求设置不同的访问权限。按照权限大小可以有以下几种:

浏览器缓存 目前几乎所有的浏览器都有本地缓存机制。开发者可以通过控制 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,点击左上角的“新建连接”。

../../_images/cyberduck-new-connection.png

在弹出的对话框中填写连接相关信息:

类型:Swift。
服务器:auth.sinas3.com
端口:443(默认)
用户名:应用 AccessKey(在应用“汇总信息”页面中查看)
密码:应用 SecretKey(在应用“汇总信息”页面中查看)

填写完成后点击连接。如果弹出 auth.sinas3.com,api.sinas3.com 相关证书问题,请选择信任。

../../_images/cyberduck-setting.png

有些版本的 Cyberduck 会弹出下面的对话框,忽略,直接点登录就可以了。

../../_images/cyber-duck-tenant.png

连接完成后,将会看到该应用 Storage 的所有 Bucket 列表:

../../_images/cyberduck-ui.png

操作:双击 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。

API使用手册

点击查看

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();