七牛云存储之sign简单实现

  • 概述:
    上一篇博文讲解了如何从七牛的私有空间下载资源文件到本地,那么这篇博文,讲解一下七牛云下载token的实现。

  • 步骤:
    1、给私有空间绑定一个自定义域名,通过该自定义域名,拼接上文件名称,即可获取一个baseUrl;如图:
    七牛云存储之sign简单实现_第1张图片

    2、设置时间戳,java中设置Unix时间戳,其实就是获取格林尼治时间,转换为秒即可。
    3、 签名获取token;
    4、 拼接生成真正的downloadUrl

  • 代码示例如下:

package com.qiniu.kodo;

import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;

import com.qiniu.base.AccountMgr;
import com.qiniu.common.Constants;
import com.qiniu.util.UrlSafeBase64;

/**
 * 个人针对七牛的私有空间文件进行签名
 * @author xuhuanchao
 *
 */
public class SignDownloadToken {

    public static void main(String[] args) {
        String baseUrl = "http://private.qiniuts.com/admin_1.jpg";
        System.out.println(getDownloadUrl(baseUrl, 3600));

//      Auth auth = Auth.create(AccountMgr.ACCESS_KEY, AccountMgr.SECRET_KEY);
//      String realUrl = auth.privateDownloadUrl(baseUrl);
//      System.out.println(realUrl);
    }

    /**
     * 
     * @param baseUrl
     * @param deadline
     * @return
     */
    public static String getDownloadUrl(String baseUrl, long deadline)  {
        StringBuffer downloadUrl = new StringBuffer(baseUrl);
        long ts = (System.currentTimeMillis()/1000) + deadline;
        downloadUrl.append("?e=" + String.valueOf(ts));
        try {
            Mac mac = Mac.getInstance("HmacSHA1");
            byte[] sk = AccountMgr.SECRET_KEY.getBytes(Constants.UTF_8);
            SecretKeySpec secretKey = new SecretKeySpec(sk, "HmacSHA1");
            mac.init(secretKey);
            String encodeSign = UrlSafeBase64.encodeToString(mac.doFinal(downloadUrl.toString().getBytes()));
            String token = AccountMgr.ACCESS_KEY + ":" + encodeSign;
            downloadUrl.append("&token=" + token);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (InvalidKeyException e) {
            e.printStackTrace();
        }
        return downloadUrl.toString();
    }

}

上面的实现是参考七牛的说明文档,说真的不怎么看得动,摸索了很久…….文档链接如下:
http://developer.qiniu.com/article/developer/security/download-token.html

  • 测试结果:
    七牛云存储之sign简单实现_第2张图片

    浏览器访问:
    七牛云存储之sign简单实现_第3张图片

你可能感兴趣的:(Qiniu)