我是个纯客户端开发者,为什么强制一个字“纯”呢?因为我不懂服务器端,完全不知道linux是怎么玩的,也不知道tomcat是啥玩意儿,就连maven之类的工具也不知道咋整。好吧,我承认我比较菜,菜的让老公在外面很丢脸。作为一个纯客户端开发者,都希望有个强大的工具,在不需要服务器接口开发的情况下,能够做出很不错的app。
因为最近项目的需要,接触了下七牛,开始一直不理解为什么意思创业公司没事去整什么云服务,而且吧,最近市场上很多巨头都提供云服务,什么亚马逊啊,百度啊,京东啊,亚马逊是很早就知道的,那个时候觉得亚马逊太专业了,没有过多了解,百度呢,稍微方便些,但是一想到要自己定义接口,我就各种抓狂。使用七牛是没选择的,因为必须要使用。好吧,硬着头皮上。
先是在七牛官网上注册了账号,然后创建了一个空间,开始不明白空间是干什么用的,后来才知道原因是有七牛分配二级域名。七牛的存储方式是个简单的键值对应的关系。
七牛的sdk里就带有图片上传的demo。
/**
* 普通上传文件
* @param uri
*/
public void doUpload(Context ctx, File file, final Handler handler, final int id) {
String key = "auto_key" + System.currentTimeMillis(); // 自动生成key
PutExtra extra = new PutExtra();
extra.params = new HashMap<String, String>();
reqToken();
url_weixinshare = returnUrl + key;
Log.d("token", "uptoken = "+ uptoken+", bucketName = " +bucketName);
IO.putFile(ctx, uptoken, key, Uri.fromFile(file), extra, new JSONObjectRet() {
@Override
public void onProcess(long current, long total) {
Log.d("IO.putFile", "正在上传图片");
}
@Override
public void onSuccess(JSONObject resp) {
Log.d("IO.putFile", "successed!上传图片");
Message msg = handler.obtainMessage();
msg.arg1 = id;// 用来判断用户点击的是那个按钮(微信,朋友圈)
msg.what = SUCCESSED;// 表示发送成功
handler.sendMessage(msg);
}
@Override
public void onFailure(QiniuException ex) {
uploading = false;
Log.d("IO.putFile", "错误: " + ex.getMessage());
handler.sendEmptyMessage(FAILURE);
}
});
}
其中token是服务端生成的,七牛官网有提供临时token,用于测试(使用七牛提供的ak,sk生成)。
key就是你上传的资源名。
总之,七牛还是很easy,很方便的一个云存储工具。good!