public class BCSUtil {
private static String hostBcs = "bcs.duapp.com";
private static String accessKeyBcs = "";
private static String secretKeyBcs = "";
private static String bucketBcs = "dreamfactory";
private static String baseContentBcs = "MBO" + "\n" + "Method=GET" + "\n"
+ "Bucket=dreamfactory" + "\n" + "Object=";
private BaiduBCS baiduBCS;
private static BCSUtil instance;
public static BCSUtil getInstance() {
if (instance == null) {
instance = new BCSUtil();
}
return instance;
}
private BCSUtil() {
BCSCredentials credentials = new BCSCredentials(accessKeyBcs,
secretKeyBcs);
baiduBCS = new BaiduBCS(credentials, hostBcs);
baiduBCS.setDefaultEncoding("UTF-8"); // Default UTF-8
}
public String putAvatarObject(String avatar64, int uid) {
String objectName = getAvatarObjectName(uid);
byte[] avatarBytes = Base64.decodeBase64(avatar64);
ByteArrayInputStream inputStream = new ByteArrayInputStream(avatarBytes);
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType("image/*");
metadata.setContentLength(avatarBytes.length);
try {
PutObjectRequest request = new PutObjectRequest(bucketBcs,
objectName, inputStream, metadata);
BaiduBCSResponse<ObjectMetadata> response = baiduBCS
.putObject(request);
System.out.println("success!! x-bs-request-id: "
+ response.getRequestId());
return getAvatarUrl(uid, objectName);
} catch (Exception e) {
System.out.println("faild!!");
return null;
}
}
private String getAvatarObjectName(int uid) {
long time = System.currentTimeMillis();
return "/avatar/user" + uid + "_" + time +".png";
}
private String getAvatarUrl(int uid, String objectName) {
try {
String signatureString = getSignature(objectName);
String signString = "MBO:" + accessKeyBcs + ":" + signatureString;
String urlString = "http://bcs.duapp.com/dreamfactory" + objectName
+ "?sign=" + signString;
return urlString;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
private String getSignature(String objectName)
throws GeneralSecurityException, UnsupportedEncodingException {
String contentBcs = baseContentBcs + objectName + "\n";
SecretKey secretKey = null;
byte[] keyBytes = secretKeyBcs.getBytes();
secretKey = new SecretKeySpec(keyBytes, "HmacSHA1");
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(secretKey);
byte[] text = contentBcs.getBytes();
String base64Signature = new String(Base64.encodeBase64(mac
.doFinal(text))).trim();
// URLEncoder.encode(base64Signature);
return base64Signature;
}
}
BCSUtils备份
最新推荐文章于 2024-02-22 17:45:43 发布