Android如何将图片上传到七牛云存储

前段时间做个人中心页面时,添加了头像上传功能,当时使用的是七牛的云存储,个人感觉还不错。所以就总结一下Android使用七牛云存储的图片上传,具体的图片选择过程可参见我的另一篇文章Android之图片选择与裁剪,今天我们重点要说的是七牛的图片上传功能。

在AndroidManifest.xml中添加访问存储卡和网络的权限:

1
2
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

添加图片上传所需要的jar包(这一点比较坑,记得当时官网上下载的不能用)

下载: 七牛图片上传需要的Jar包

代码实现:

在需要图片上传的地方调用下面的方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* 上传图片到七牛
* @param filePath 要上传的图片路径
* @param token 在七牛官网上注册的token
*/
private void uploadImageToQiniu(String filePath, String token) {
UploadManager uploadManager = new UploadManager();
// 设置图片名字
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String key = "icon_" + sdf.format(new Date());
uploadManager.put(filePath, key, token, new UpCompletionHandler() {
@Override
public void complete(String key, ResponseInfo info, JSONObject res) {
// info.error中包含了错误信息,可打印调试
// 上传成功后将key值上传到自己的服务器
}
}, null);
}

需要注意的是,不要再客户端直接引用token,否则可能导致token泄漏,造成不必要的损失。

正确的图片上传流程:

  1. 访问自己的服务器获取token;
  2. 使用获取的token上传图片到七牛;
  3. 从七牛获取上传后的图片的存储路径(也就是complete方法中的key参数),再上传到自己的服务器进行存储,至此图片上传才算完成。
,