上传策略
上传凭证
各种凭证的例子
http://blog.csdn.net/netdxy/article/details/48467985
import java.net.URLDecoder;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import com.alibaba.fastjson.JSON;
import com.qiniu.util.StringUtils;
import com.qiniu.util.UrlSafeBase64;
/**
- 业务实现类
*/
public class ImageServiceBizImpl {
// 设置好账号的ACCESS_KEY和SECRET_KEY public static String ACCESS_KEY = PropertiesUtil.getStringValue("QINIU_ACCESS_KEY"); public static String SECRET_KEY = PropertiesUtil.getStringValue("QINIU_SECRET_KEY"); public static String BUCKETNAME = PropertiesUtil.getStringValue("QINIU_BUCKETNAME"); public static String BASE_URL = PropertiesUtil.getStringValue("QINIU_BASE_URL"); public static String CALL_BACK_URL = PropertiesUtil.getStringValue("QINIU_CALL_BACK_URL"); //获取上传的token public String getUpLoadtoken() { String uptoken = null; // 请确保该bucket已经存在 Calendar cal = Calendar.getInstance(); cal.add(Calendar.HOUR_OF_DAY, 1); long deadline = cal.getTimeInMillis() / 1000; try { StringBuffer putpolicy = new StringBuffer( "{\"scope\":\"" + BUCKETNAME + "\",\"deadline\":" + deadline + ","); putpolicy.append("\"callbackUrl\":\"" + CALL_BACK_URL + "\","); putpolicy.append("\"callbackBody\":\"bucket=$(bucket)&fname=$(fname)"); putpolicy.append("&imageInfo=$(imageInfo)"); putpolicy.append("&hash=$(etag)&key=$(key)&fsize=$(fsize)&mimeType=$(mimeType)\""); putpolicy.append("}"); String t3 = UrlSafeBase64.encodeToString(putpolicy.toString()); Mac mac = javax.crypto.Mac.getInstance("HmacSHA1"); mac.init(new SecretKeySpec(StringUtils.utf8Bytes(SECRET_KEY), "HmacSHA1")); String t2 = UrlSafeBase64.encodeToString(mac.doFinal(StringUtils.utf8Bytes(t3))); uptoken = ACCESS_KEY + ":" + t2 + ":" + t3; } catch (Exception e) { e.printStackTrace(); } return uptoken; } //回调反馈内容 public Map callback(HttpServletRequest req) { Map retMap = null ; try { String ret = readPostData(req); System.out.println(" req:" + ret ); // 返回给客户端结果 Map map = getUrlParams(ret); if ( map.containsKey("key")) { boolean bRet = true; retMap = getResult(map); if ( ! bRet ){ retMap = null ; } System.out.println(" saveImage 2 db :" + bRet ); } System.out.println(" retMap:" + map.toString() ); return retMap; } catch (Exception e) { e.printStackTrace(); return retMap; } } public Map<String,Object> getResult(Map map){ Map<String,Object> retMap =new HashMap<String,Object>(0); try{ retMap.put("file_name", map.get("key").toString()); if ( map.containsKey("mimeType") ) { retMap.put("mimeType", map.get("mimeType").toString()); } if ( map.containsKey("userId") ) { retMap.put("userId", map.get("userId").toString()); } if ( map.containsKey("imageInfo") ) { String imageInfo = map.get("imageInfo").toString(); Map mapImagInfo = JSON.parseObject(imageInfo); retMap.put("imageInfo",mapImagInfo); } if ( map.containsKey("fsize") ) { retMap.put("fsize", map.get("fsize").toString()); } if ( map.containsKey("msgId") ) { retMap.put("msgId", map.get("msgId").toString()); } }catch(Exception e){ e.printStackTrace(); } return retMap; } private String readPostData(HttpServletRequest request) { String strBody = null; byte[] xmldataByte = null; try { ServletInputStream sis = null; // 取HTTP请求流 sis = request.getInputStream(); // 取HTTP请求流长度 int size = request.getContentLength(); // 用于缓存每次读取的数据 byte[] buffer = new byte[size]; // 用于存放结果的数组 xmldataByte = new byte[size]; int count = 0; int rbyte = 0; // 循环读取 while (count < size) { // 每次实际读取长度存于rbyte中 rbyte = sis.read(buffer); for (int i = 0; i < rbyte; i++) { xmldataByte[count + i] = buffer[i]; } count += rbyte; } strBody = new String(xmldataByte, "UTF-8"); strBody = URLDecoder.decode(strBody, "UTF-8"); strBody = strBody.replace("\r", "").replace("\n", ""); } catch (Exception e) { e.printStackTrace(); } return strBody; } /** * 将参数转换为map * @param param * @return */ public Map<String, Object> getUrlParams(String param) { Map<String, Object> map = new HashMap<String, Object>(0); try{ if ( StringHelp.isBlank(param) ) { return map; } String[] params = param.split("&"); for (int i = 0; i < params.length; i++) { String[] p = params[i].split("="); if (p.length == 2) { map.put(p[0], p[1]); } } return map; } catch (Exception e) { e.printStackTrace(); } return map; }
}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于