android接入七牛_android上引入七牛 上传图片或者文件 最终整理版本(可用)

本文提供了一个名为LxQiniuUploadUtils的Java类,该类用于帮助Android应用接入七牛云存储,实现图片或文件的上传。通过设置上传策略、进行HMAC-SHA1签名等步骤,确保上传过程的安全性和有效性。
摘要由CSDN通过智能技术生成

1 packagecn.haodehaode.utils;2

3 importcom.qiniu.android.http.ResponseInfo;4 importcom.qiniu.android.storage.UpCompletionHandler;5 importcom.qiniu.android.storage.UploadManager;6 importcom.qiniu.android.utils.UrlSafeBase64;7

8 importorg.json.JSONObject;9

10 importjava.net.URLEncoder;11 importjava.util.List;12

13 importjavax.crypto.Mac;14 importjavax.crypto.SecretKey;15 importjavax.crypto.spec.SecretKeySpec;16

17 importcn.haodehaode.utils.upload.UploadCallBack;18

19 /**

20 * 七牛上传工具类21 *22 *@authorJALEN c9n9m@163.com QQ:30338970 https://shop157209029.taobao.com/23 *@versionV1.024 * @Title: ${FILE_NAME}25 * @Package cn.haodehaode.utils26 * @Description: ${todo}27 * @date 15/10/31 15:3228 */

29 public classLxQiniuUploadUtils {30 //七牛后台的key

31 private static String AccessKey =HDConstants.QN_ACCESSKEY;32 //七牛后台的secret

33 private static String SecretKey =HDConstants.QN_SECRETKEY;34

35 private static final String MAC_NAME = "HmacSHA1";36 private static final String ENCODING = "UTF-8";37

38 //unix时间戳:2065-12-31 00:00:00

39 private static long delayTimes = 3029414400l;40

41 /**

42 * 上传43 *44 *@paramdomain bucketName的名字45 *@parampath 上传文件的路径地址46 */

47 public static void uploadPic(final String domain, final String path, final String keys, finalUploadCallBack callBack) {48 try{49 //1:第一种方式 构造上传策略

50 JSONObject _json = newJSONObject();51 _json.put("deadline", delayTimes);//有效时间为一个小时

52 _json.put("scope", domain);53 String _encodedPutPolicy =UrlSafeBase64.encodeToString(_json54 .toString().getBytes());55 byte[] _sign =HmacSHA1Encrypt(_encodedPutPolicy, SecretKey);56 String _encodedSign =UrlSafeBase64.encodeToString(_sign);57 final String _uploadToken = AccessKey + ':' + _encodedSign + ':'

58 +_encodedPutPolicy;59 UploadManager uploadManager = newUploadManager();60 uploadManager.put(path, keys, _uploadToken,61 newUpCompletionHandler() {62 @Override63 public voidcomplete(String key, ResponseInfo info,64 JSONObject response) {65 if(info.isOK()) {66 String urls =getFileUrl(domain, keys);67 callBack.success(urls);68 } else

69 callBack.fail(key, info);70 }71 }, null);72 } catch(Exception e) {73 e.printStackTrace();74 }75 }76

77

78 /**

79 * 使用 HMAC-SHA1 签名方法对对encryptText进行签名80 *81 *@paramencryptText 被签名的字符串82 *@paramencryptKey 密钥83 *@return

84 *@throwsException85 */

86 public static byte[] HmacSHA1Encrypt(String encryptText, String encryptKey)87 throwsException {88 byte[] data =encryptKey.getBytes(ENCODING);89 //根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称

90 SecretKey secretKey = newSecretKeySpec(data, MAC_NAME);91 //生成一个指定 Mac 算法 的 Mac 对象

92 Mac mac =Mac.getInstance(MAC_NAME);93 //用给定密钥初始化 Mac 对象

94 mac.init(secretKey);95 byte[] text =encryptText.getBytes(ENCODING);96 //完成 Mac 操作

97 returnmac.doFinal(text);98 }99

100 /**

101 * 通过key获取上传的资源文件的全路径102 *103 *@paramkey104 *@paramdomain105 *@return

106 */

107 public staticString getFileUrl(String domain, String key) {108 String url =HdUtils.transDomai2Zone(domain);109 StringBuilder sb = newStringBuilder();110 sb.append(url);111 try{112 //1:构造URL

113 String encode = URLEncoder.encode(key, "UTF-8");114 sb.append(encode);115 //2:为url加上过期时间 unix时间

116 sb.append("?e=" + delayTimes);//delayTimes = 1451491200117 //3:对1 2 操作后的url进行hmac-sha1签名 secrect

118 String s =sb.toString();119 byte[] bytes =HmacSHA1Encrypt(s, SecretKey);120 String sign =UrlSafeBase64.encodeToString(bytes);121 //4:将accsesskey 连接起来

122 sb.append("&token=" + AccessKey + ":" +sign);123 } catch(Exception e) {124 e.printStackTrace();125 }126 returnsb.toString();127 }128

129 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值