前言:

以下是引入七牛的步骤,以及在七牛中上传文件和获取文件private 私密地址.

生成上传凭证和获取下载凭证

具体如果使用过程有什么疑问可以加QQ(备注:七牛问题).

1:导入相关的包(注意是4个哦)

compile files('libs/android-async-http-1.4.9.jar')
compile files('libs/qiniu-android-sdk-7.0.9.jar')
compile files('libs/happy-dns-0.2.4.jar')
compile files('libs/httpclient-4.3.6.jar')

2:看下面代码 调用方法即可.

 package cn.haodehaode.utils;

 import com.qiniu.android.http.ResponseInfo;
import com.qiniu.android.storage.UpCompletionHandler;
import com.qiniu.android.storage.UploadManager;
import com.qiniu.android.utils.UrlSafeBase64; import org.json.JSONObject; import java.net.URLEncoder;
import java.util.List; import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec; import cn.haodehaode.utils.upload.UploadCallBack; /**
* 七牛上传工具类
*
* @author JALEN c9n9m@163.com QQ:30338970 https://shop157209029.taobao.com/
* @version V1.0
* @Title: ${FILE_NAME}
* @Package cn.haodehaode.utils
* @Description: ${todo}
* @date 15/10/31 15:32
*/
public class LxQiniuUploadUtils {
//七牛后台的key
private static String AccessKey = HDConstants.QN_ACCESSKEY;
//七牛后台的secret
private static String SecretKey = HDConstants.QN_SECRETKEY; private static final String MAC_NAME = "HmacSHA1";
private static final String ENCODING = "UTF-8"; //unix时间戳:2065-12-31 00:00:00
private static long delayTimes = 3029414400l; /**
* 上传
*
* @param domain bucketName的名字
* @param path 上传文件的路径地址
*/
public static void uploadPic(final String domain, final String path, final String keys, final UploadCallBack callBack) {
try {
// 1:第一种方式 构造上传策略
JSONObject _json = new JSONObject();
_json.put("deadline", delayTimes);// 有效时间为一个小时
_json.put("scope", domain);
String _encodedPutPolicy = UrlSafeBase64.encodeToString(_json
.toString().getBytes());
byte[] _sign = HmacSHA1Encrypt(_encodedPutPolicy, SecretKey);
String _encodedSign = UrlSafeBase64.encodeToString(_sign);
final String _uploadToken = AccessKey + ':' + _encodedSign + ':'
+ _encodedPutPolicy;
UploadManager uploadManager = new UploadManager();
uploadManager.put(path, keys, _uploadToken,
new UpCompletionHandler() {
@Override
public void complete(String key, ResponseInfo info,
JSONObject response) {
if (info.isOK()) {
String urls = getFileUrl(domain, keys);
callBack.success(urls);
} else
callBack.fail(key, info);
}
}, null);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 使用 HMAC-SHA1 签名方法对对encryptText进行签名
*
* @param encryptText 被签名的字符串
* @param encryptKey 密钥
* @return
* @throws Exception
*/
public static byte[] HmacSHA1Encrypt(String encryptText, String encryptKey)
throws Exception {
byte[] data = encryptKey.getBytes(ENCODING);
// 根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称
SecretKey secretKey = new SecretKeySpec(data, MAC_NAME);
// 生成一个指定 Mac 算法 的 Mac 对象
Mac mac = Mac.getInstance(MAC_NAME);
// 用给定密钥初始化 Mac 对象
mac.init(secretKey);
byte[] text = encryptText.getBytes(ENCODING);
// 完成 Mac 操作
return mac.doFinal(text);
} /**
* 通过key获取上传的资源文件的全路径
*
* @param key
* @param domain
* @return
*/
public static String getFileUrl(String domain, String key) {
String url = HdUtils.transDomai2Zone(domain);
StringBuilder sb = new StringBuilder();
sb.append(url);
try {
//1:构造URL
String encode = URLEncoder.encode(key, "UTF-8");
sb.append(encode);
//2:为url加上过期时间 unix时间
sb.append("?e=" + delayTimes);//delayTimes = 1451491200
//3:对1 2 操作后的url进行hmac-sha1签名 secrect
String s = sb.toString();
byte[] bytes = HmacSHA1Encrypt(s, SecretKey);
String sign = UrlSafeBase64.encodeToString(bytes);
//4:将accsesskey 连接起来
sb.append("&token=" + AccessKey + ":" + sign);
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
} }

public  interface UploadCallback{
void sucess(String url);
void fail(String key,ResonseInfo info);
}

android上引入七牛 上传图片或者文件 最终整理版本(可用)的更多相关文章

  1. 七牛php-sdk使用-文件上传

    使用七牛进行文件上传可以有多种方式: 直接form表单上传,需要自己按照文档做配置 使用七牛jssdk,部署较简单,大文件分片上传 php-sdk后台上传 首先,所有的上传方法以及所有的跟七牛接口相关 ...

  2. vue-element:文件上传七牛之key和异步的问题

    效果图: html 代码: <el-form-item label="Excel文件" :label-width="formLabelWidth" pro ...

  3. nodejs+phantomjs+七牛 实现截屏操作并上传七牛存储

    近来研究了下phantomjs,只是初涉,还谈不上深入研究,首先介绍下什么是phantomjs. 官网上的介绍是:”PhantomJS is a headless WebKit scriptable ...

  4. MWEB+七牛 上传图片

    MWEB+七牛 上传图片 博客之前的图片也都用的七牛,但编辑和上传分离还是很麻烦,所以一直很心水meb, 上周mweb降到¥50,感觉短期内应该不会再降了,于是果断入手,今天在和使用图床功能遇到了一些 ...

  5. 七牛上传图片视频demo

    /引入Plupload .qiniu.js后 varuploader = Qiniu.uploader({ runtimes:'html5,flash,html4',//上传模式,依次退化 brows ...

  6. PHP系列 | Thinkphp3.2 上传七牛 bad token 问题 [ layui.upload 图片/文件上传]

    前端代码 <div class="logo_out" id="upload-logo"></div> JS代码 /** * 上传图片 * ...

  7. java 七牛上传图片到服务器(采用的html5 压缩 传输base64方式)

    //html 页面如下<div class="form-group"> <label class="col-sm-2 control-label&quo ...

  8. php base64编码图片上传七牛

    上网上找了好几个例子 都是自己写curl上传 感觉七牛这么多年了不应该sdk不提供一个方法 然后试 试 试 显示put 方式 上传上去 就是个字符串 后来换成文件上传方法 putFile 成了 不废话 ...

  9. yii2上传七牛图片(超详细)

    前期准备 1.在七牛注册账号https://portal.qiniu.com/signup/choice 2.创建空间https://portal.qiniu.com/bucket(记住存储空间名称和 ...

随机推荐

  1. centos下postgresql的安装与配置[转]

    本文摘自:http://blog.chinaunix.net/uid-24846094-id-78490.html 一.安装(以root身份进行) 1.检出最新的postgresql的yum配置从ht ...

  2. 【Visual Lisp】图元选择集专题

    图元选择集专题;;★★★01.选择集操作★★★(setq ss (ssadd));;创建一个空选择集(ssadd (car(entsel)) ss);;将点取的图元添加到ss选择集中,可以不用setq ...

  3. [UCSD白板题] The Last Digit of a Large Fibonacci Number

    Problem Introduction The Fibonacci numbers are defined as follows: \(F_0=0\), \(F_1=1\),and \(F_i=F_ ...

  4. velocity模板入门

    $!{velocityCount}  随机

  5. c1ctf2016 wp

    web: 1.web萌新福利 没啥好说的,右键查看源码得key 2.you are not admin 一看题目,就想到http头修改,常见的x-forwarded-for,referer,host, ...

  6. DNS的view设置

    在实际的网络应用中,我们有时希望对于同一个Domain Name能够根据不同的请求IP 地址/区域,解析到不同的对应IP地址,比如:有时对于企业内部网络和外部网络希望对同一域名解析到不同的IP地址以达 ...

  7. 在 Cloud 9 中搭建和运行 Go

    简介 自从使用了Chromebook,我脑中一直充斥着在云端开发的念头.在我使用过的位数不多的在线开发环境中,唯有 Cloud 9令我比较满意.实际上,Cloud 9还不支持Go的开发,因此本文我将教 ...

  8. Android 自定义View 总结

    Android系统本身给我们提供十分丰硕的组件让我们实现包罗万象的UI效果,与此同时,我们也能够非常方便实现各种方法来实现各种强大的功能.通过继承现有的UI控件,我们也能够拓展现有的功能.我们也能够完 ...

  9. 高性能网站架构设计之缓存篇(6)- Redis 集群(中)

    昨天晚上钓鱼回来,大发神经,写了篇概括程序员生活现状的文章,没想到招来众多人的口诛笔伐,大有上升到政治层面的趋势. 我也许不会再发表任何冲击心灵的文章,我希望给大家带来更多的正能量,所以那篇文章已被我 ...

  10. .NET Core 1.0-最简单的Hello world控制台程序

    使用任意的文本编辑软件,新建两个文件 1.Program.cs using System; using System.Collections.Generic; using System.Linq; u ...