第一次使用这个云存储,话说7牛云存储大有来头!区别于国内外其他云存储,七牛自行研发的全分布式架构解决了其他云存储单一数据中心架构可能存在的风险,同时首创双向加速特性对数据上传下载均加速,使得数据访问速度较传统方案平均提升 50%以上。此外,镜像存储、客户端直传、断点续上传、云端富媒体处理等七牛云存储独有的功能也大大提升了开发效率,最大程度减少了服务器资源浪费。
7牛云存储需要3个信息就可以上传图片了。
1,AK(AccessKey)
2,SK(SecretKey)
3,bucketName(应该就是二级域名)
进入账号设置-密钥可以找到如下信息:
JAVA服务器代码:
Config.ACCESS_KEY = "***************************************"; Config.SECRET_KEY = "***************************************"; Mac mac = new Mac(Config.ACCESS_KEY, Config.SECRET_KEY); // 请确保该bucket已经存在 String bucketName = "iamchen"; PutPolicy putPolicy = new PutPolicy(bucketName); String uptoken = putPolicy.token(mac); PutExtra extra = new PutExtra(); String key = UUID.randomUUID().toString(); String localFile = tempfile.getAbsolutePath(); PutRet ret = IoApi.putFile(uptoken, key, localFile, extra); return ret.getKey();//ret.getHash();
Android上传文件代码(先从web服务器得到token):
//若已经上传则文件名显示为:7d0fb768-cace-44c2-9704-29e170c447c9 //未上传为:/storage/sdcard0/RZproject/3e94c815-f2fb-48cc-9d1c-51be2ae245cf.jpg if (!ViewUtil.isStrEmpty(listFile[i])) {// 如果有文件 if (ViewUtil.isuploadedphoto(listFile[i])) {// 如果已上传,则没有特殊符号 listSuccessName[i] = listFile[i]; } else { listSuccessName[i] = null; imageCountToUpload++; extra.params = new HashMap<String, String>(); extra.params.put("x:index", String.valueOf(i)); extra.params.put("x:fileName", listFile[i]); //UploadImageAsyncTask //putFile(String uptoken, String key, File file, PutExtra extra, JSONObjectRet callback) Log.i(TAG, "begin--->IO.putFile"); File file = new File(listFile[i]); IO.putFile(OrderData.getTempToken(), key, file, extra, myJSONObjectRet); } }
myJSONObjectRet是一个回调对象,处理云服务器返回来的结果(服务器保存图片后会返回一段json数据。json数据中有两个数据。一个是key,还有一个是hash)
JSONObjectRet myJSONObjectRet = new JSONObjectRet(){ @Override public void onSuccess(JSONObject obj) { String index = obj.optString("x:index", ""); String name = obj.optString("x:fileName", ""); String key = obj.optString("key", ""); Log.i(TAG, "位置:" + index + ",文件名:" + name +",key:"+key); listSuccessName[Integer.valueOf(index)] = key; loadedimageCountUp++; if (loadedimageCountUp >= imageCountToUpload) { setClothesDetail(); } Log.i(TAG, "end--->IO.putFile"); } @Override public void onFailure(QiniuException ex) { hideProgressDialog(); } };
注意在使用之前应该导入相关的包。