我在2014年就注册了七牛的云存储服务账号,虽然最终没有使用七牛的服务,不过对七牛的服务还是挺满意的。
最近又要用到云存储,考查了几家,最后选择了七牛。因为我最近转Android开发,都是一些练习用的小项目。而七年提供一定程度的免费服务。
七牛有不错的SDK,各种版本都有。官方 SDK有:iOS、Android、PHP、Python、Ruby、Java、Node.js、C#、C/C++、Go、JavaScript,基本全了。
我下载了JAVA的SDK,是从GITHUB下载的,下载的是源码,然后建一个项目,按官方的教程写了一个上传的程序,结果出错了
// 请求失败时打印的异常的信息
{ResponseInfo:com.qiniu.http.Response@6da68d,status:400, reqId:WxMAALQ6m6-3dFoU, xlog:UP:1/400, xvia:, adress:up.qiniu.com/183.136.139.10:80, duration:0.000000 s, error:incorrect zone, please use up-z1.qiniu.com}
//响应的文本信息
{"error":"incorrect zone, please use up-z1.qiniu.com"}
官方教程也出错!头大了。上网查,说明选择南方的主机就不会错了,可是我是北方人,我选的北方主机就不行了吗?四处找也没找到解决的方案。只能硬着头皮看源码了。
其实也很简单,直接搜索up.qiniu.com,最终找在七牛SDK的源码里找到下面这个文件
package com.qiniu.common;
/**
* 上传多区域
*/
public final class Zone {
/**
* 默认上传服务器
*/
public final String upHost;
/**
* 备用上传服务器,当默认服务器网络链接失败时使用
*/
public final String upHostBackup;
public Zone(String upHost, String upHostBackup) {
this.upHost = upHost;
this.upHostBackup = upHostBackup;
}
public static Zone zone0() {
return new Zone("http://up.qiniu.com", "http://upload.qiniu.com");
}
public static Zone zone1() {
return new Zone("http://up-z1.qiniu.com", "http://upload-z1.qiniu.com");
}
}
源码前面有真相,看到了,我是北方地方,我应该选择zone1。查找引用,发现是在com.qiniu.common.Config中有一个静态变量
public static Zone zone = Zone.zone0();
看来我需要重新设置一下这个变量就可以了。
在我的代码开头,我进行一下设置就好了,代码如下
Config.zone = Zone.zone1();
重新运行,一切OK。4000多张图片,50MB,只用了不到3分钟,速度不错!
下面是七牛免费额度说明
注册成为标准用户后即可永久获得以下免费额度:
10GB永久免费存储空间; 每月10GB下载流量; 每月10万次Put请求; 每月100万次Get请求
对我做练习已经足够了。
如果你也需要用它来做练习,请用下面的地址进行申请,可以提高我每月的下载流量
https://portal.qiniu.com/signup?code=3l8fijedkf5n6
希望你也喜欢