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 [email protected] * @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); } }
?
时间: 2024-09-28 12:21:55