码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2015-10-31 17:06:59      阅读:531      评论:0      收藏:0      [点我收藏+]

标签:

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 android.util.Log;

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 javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

/**
* 七牛上传工具类
*
* @author JALEN  c9n9m@163.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";

public static void uploadPic() {
String keys = CommonUtils.getTodayDate18();
String bucketName = HDConstants.BUCKET_AUTHFILE;

try {
// 1:第一种方式 构造上传策略
           JSONObject _json = new JSONObject();
long _dataline = System.currentTimeMillis() / 1000 + 3600;
_json.put("deadline", _dataline);// 有效时间为一个小时
           _json.put("scope", bucketName);
String _encodedPutPolicy = UrlSafeBase64.encodeToString(_json
.toString().getBytes());
byte[] _sign = HmacSHA1Encrypt(_encodedPutPolicy, SecretKey);
String _encodedSign = UrlSafeBase64.encodeToString(_sign);
String _uploadToken = AccessKey + ‘:‘ + _encodedSign + ‘:‘
                   + _encodedPutPolicy;
//此处为模拟的本地相册的一个图片
           String picPath = "/storage/emulated/0/DCIM/Camera/IMG_20150924_214351.jpg";
UploadManager uploadManager = new UploadManager();
//以下api可以修改为图片地址 或者file  或者byte[]
           uploadManager.put(picPath, keys, _uploadToken,
new UpCompletionHandler() {
@Override
                       public void complete(String key, ResponseInfo info,
JSONObject response) {
Log.e("qiniu", info.toString());
}
}, 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);
}

}

?

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

标签:

原文地址:http://www.cnblogs.com/china-soft/p/4925683.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!