Android AsyncHttpClient图片上传

本文,主要是解决app在与后台通信时,如何保证字段信息与图片同步上传。

网上许多图片上传的实现,但笔者在开发中发现,这些并不是一个具体的流程。因此,写此文章总结下图片的上传流程。
图片上传流程,对于大部分app来说,是最长见的操作,拥有一个具体的流程,在开发中会带来许多方便。

流程具体如下:
1、选择图片(拍摄、从图片库选择)
2、压缩与本地缓存,图片需要压缩,很容易理解,为防止OOM。而缓存是保存压缩后的图片,以便上传到后台。
2、界面呈现选择的图片。
3、调用后台接口,上传图片。
4、取消上传后或者上传成功后,删除缓存。
解释:
图片呈现时,最好是先压缩再呈现。压缩方法网上很多,但笔者对于压缩方法,暂未找到一个可控制压缩后图片大小的方法,网上大部分方法为压缩后图片大小不可控。
图片压缩了,为什么还需要做缓存,原因:
图片上传有许多种方法,如字节流,Base64等。
在Android中,app与后台通信时,都有封装好的通信方法。相信许多开发者也会选择如AsyncHttpClient这样的类库,实现起来简单易用。另外,一般图片上传时,不会简单的只上传图片,图片可能是附加的信息。这时,采用字节流,Base64等方法时,会出现两个问题,一个是怎么把字段信息和图片一起上传,二是若分开上传,怎么保证字段信息和图片同步。
其实,AsyncHttpClient已经有关于这些问题的解决方法,AsyncHttpClient里,已经可以实现了上传file,利用这个就很好的解决了上述问题。
AsyncHttpClient上传图片,是以file的形式上传的,而在android中,压缩后的图片是Bitmap形式,所以需要反压缩后的图片保存起来,以File的形式再上传。
如以下代码:

String title = "title";
File file = new File(path);
RequestParams requestParams = new RequestParams();
requestParams.put("title", title);
requestParams.put("file" , file);

言归正传,以下是各个流程的具体实现。

一、选择图片
1、界面跳转选择图片

//跳转拍摄照片
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);                        startActivityForResult(intent,101);
//跳转从照片库选择
Intent intent2 = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent2,102);

2、返回结果处理

saveImageCahc

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值