Android开发之--上传图片到七牛云存储


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

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

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

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

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

代码实现:

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

/**
 * 上传图片到七牛
 * @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);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

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

正确的图片上传流程:

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

你可能感兴趣的:(Android)