我在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

希望你也喜欢


Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐