NAME
七牛云存储上传和资源操作 API
SYNOPSIS
my
$SecretKey
=
'xx'
;
my
$AccessKey
=
'oo'
;
my
$auth
= Qiniu::Auth->new(
access_key
=>
$AccessKey
,
secret_key
=>
$SecretKey
,
);
my
$token
=
$auth
->upload_token(
'my-bucket'
,
'test'
, 3600, {
returnBody
=>
'{ "name": $(fname), "size": $(fsize)}'
});
my
$storage
= Qiniu::Storage->new(
bucket
=>
'my-bucket'
,
auth
=>
$auth
,
);
# 直接上传
my
$result
=
$storage
->upload_file(
$token
,
'/tmp/fukai.txt'
,
"test"
);
# 上传变量, 或者内存中的内容
my
$result
=
$storage
->upload_data(
$token
,
'this is file'
,
"test"
);
# 并发多线程流式上传
my
$result
=
$storage
->upload_stream(
$token
,
'/tmp/mp4'
,
"test.mp4"
,
"video/mp4"
);
# 私有文件下载
my
$authUrl
=
$auth
->private_url(
$baseUrl
);
# 资源操作
my
$result
=
$storage
->
stat
(
"test_fukai.mp4"
);
my
$result
=
$storage
->copy(
"test_fukai.mp4"
,
"kk.mp4"
);
# 列出文件
my
$result
;
do
{
$result
=
$storage
->list({
prefix
=>
'mp4'
,
limit
=> 2,
marker
=>
$result
->{marker}});
}
while
(
$result
->{marker});
DESCRIPTION
注意本部分是在应用服务器端, 提供给其它上传下载 API 用于签名用的模块. 所以要保护好你的 Secret Key 以防流传出去.
本 API 基于 七牛云存储官方 API 构建。使用此 API 构建您的网络应用程序,能让您以非常便捷地方式将数据安全地存储到七牛云存储上。
获取 Access Key 和 Secret Key
要接入七牛云存储,您需要拥有一对有效的 Access Key 和 Secret Key 用来进行签名认证。可以通过如下步骤获得:
1. 开通七牛开发者帐号
2. 登录七牛开发者自助平台,查看 Access Key 和 Secret Key
属性
bucket
你这个认证模块所需要操作的 bucket. 这个用于设置一个独立名字空间, 这个空间下在的 key 必须是全局唯一识别.
auth
这个需要使用 Qiniu::Auth 的对象, 用于资源操作时生成签名.
上传
直接上传
这个 token 需要使用认证的方法直接生成, 第一个参数为 token, 第二个参数为本地文件, 第三个参数为 key.
my
$result
=
$storage
->upload_file(
$token
,
'/tmp/fukai.txt'
,
"test"
);
上传变量, 或者内存中的内容
这个 token 需要使用认证的方法直接, 第二个参数为变量, 第三个参数为 key.
my
$result
=
$storage
->upload_data(
$token
,
'this is file'
,
"test"
);
并发多线程流式上传
这个 token 需要使用认证的方法直接, 第二个参数为本地文件, 第三个参数为 key, 第三个参数为 mime 类型.
my
$result
=
$storage
->upload_stream(
$token
,
'/tmp/mp4'
,
"test.mp4"
,
"video/mp4"
);
下载
公有文件下载
如果在给 bucket 绑定了域名的话,可以通过以下地址访问。
[GET] http://<domain>/<key>
其中 <domain> 是bucket所对应的域名。七牛云存储为每一个bucket提供一个默认域名。默认域名可以到七牛云存储开发者平台中,空间设置的域名设置一节查询。用户也可以将自有的域名绑定到bucket上,通过自有域名访问七牛云存储。
注意: key 必须采用 utf8 编码,如使用非 utf8 编码访问七牛云存储将反馈错误
私有文件下载
私有资源必须通过临时下载授权凭证, 这个方法用于给传进来的下载地址进行方法的转换, 并加入下载 token 签名.
my
$authUrl
=
$auth
->private_url(
$baseUrl
);
资源操作
资源进行操作的时候, 需要传 Qiniu::Auth 的对象给 Qiniu::Storage 模块来操作. 并且操作的名字空间都是指字的 bucket 范围内.
my
$storage
= Qiniu::Storage->new(
bucket
=>
'my-bucket'
,
auth
=>
$auth
,
);
查询文件状态
直接查询 new 的时候指定的 bucket 空间对的文件状态.
my
$result
=
$storage
->
stat
(
"test_fukai.mp4"
);
复制文件
复制 new 的时候指定的 bucket 内的文件.
my
$result
=
$storage
->copy(
"test_fukai.mp4"
,
"kk.mp4"
);
移动文件
移动 new 的时候指定的 bucket 内的文件.
my
$result
=
$storage
->move(
"test_fukai.mp4"
,
"kk.mp4"
);
删除文件
删除 new 的时候指定的 bucket 内的文件.
my
$result
=
$storage
->
delete
(
"test_fukai.mp4"
);
列出文件
列出本 bucket 中的所有文件
my
$result
;
do
{
$result
=
$storage
->list({
prefix
=>
'mp4'
,
limit
=> 2,
marker
=>
$result
->{marker}});
for
my
$item
( @{
$result
->{items} } ) {
say
$item
->{key};
}
}
while
(
$result
->{marker});
正常可以使用上面的例子中的语句就能得出所有的文件,默认上面例子是一次查询 2 条,可以写 1000.
SEE ALSO
AUTHOR
扶凯 fukai <iakuf@163.com>