前言:

以下是引入七牛的步骤,以及在七牛中上传文件和获取文件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. 【转载】Adapter用法总结大全

    下面的是看到的比较好的地址: Android各种Adapter的用法:                 http://my.oschina.net/u/658933/blog/372151 Andro ...

  2. 学习ES6--data2

    变量的解构: let [a, b, c] = [1, 2, 3] 等号左边的值等于等号右边的值,一一对应.假如右边没有相对应的值,如 let [a, b, c] = [1, 2, ] 这时候,c = ...

  3. Android系统启动顺序

    Android是一个基于Linux的开源操作系统.x86(x86是一系列的基于intel 8086 CPU的计算机微处理器指令集架构)是linux内核部署最常见的系统.然而,所有的Android设备都 ...

  4. Cobbler学习之二--Cobbler的Web管理和维护

    Cobbler的Web管理模块和命令行模块是可以分开工作的,没有依赖关系. 1 WebUI的功能 查看所有的对象和配置文件 添加或者删除system,distro, profile 执行“cobble ...

  5. 重编译Linux命令源代码

    转: http://blog.csdn.net/endoresu/article/details/6967435 以su命令为例. 查看su命令的路径: # which su /bin/su 查看su ...

  6. 怎么让让整个HTML页面变灰

    怎么让让整个HTML页面变灰 其实很简单,我们只需要一句话. html {filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1 ...

  7. C2第八次解题报告

    看过题解后如果觉得还算有用,请帮忙加点我所在团队博客访问量 http://www.cnblogs.com/newbe/ http://www.cnblogs.com/newbe/p/4069834.h ...

  8. 百度BAE JAVA环境项目部署和调试

    起初在一个应用挂在虚拟主机上,昨天早上虚拟主机挂了.本来考虑迁移到SAE上的,但之前发现SAE的JVM云豆消耗的太快(PS:我是中级开发者,每月 10000云豆,如果有哪位大神对SAE JAVA云豆能 ...

  9. HTML5学习生涯1--touchmove中遇到的问题

    在使用html5做在手机上显示轮播图片的效果时突然遇到touchmove事件在touchstart事件之后只触发了一次touchmove之后和touchend一起触发了一次,咦,这是怎么回事?怎么不和 ...

  10. Http压力测试工具HttpTest4Net

    HttpTest4Net是一款基于C#实现的和HTTP压力测试工具,通过工具可以简单地对HTTP服务进行一个压力测试.虽然VS.NET也集成了压力测试项目,但由于VS自身占用的资源导致了在配置不高的P ...