安卓开发:以Base64字符串形式上传文件——从Android选择文件并上传
2017-09-10 21:29
736 查看
简述
在常规的web开发过程中,大部分上传文件都是在web页面端通过表单直接提交,再由服务器端捕获请求来进行处理的。但是在前后端分离趋于一种流行趋势,再加上Android和iOS开发技术日渐成熟,大部分团队都会选择在服务器端仅提供一套通用的webservice数据接口,而web页面、Android和iOS统一都通过这套数据接口来向服务器发送请求和获取数据。在这一过程中,大部分的webservice数据接口都会采用xml数据格式或是json数据格式来进行数据请求和处理,在这种情况下,其实来自客户端的请求就可以看作是一个字符串(无论是xml还是json数据)。此时,常规的数据提交完全不存在任何问题,但是附件上传就需要特殊处理了。
本文简单介绍了如何在Android中选择本地文件,并向服务器发送上传请求,以字符串的形式将文件上传到服务器。
我们以上传相册中的照片为例,因为通过手机上传图片是最为常见的一种应用场景。
关于如何在Android中获取相册中的照片,或是调用摄像头拍摄照片,请查看以下文章:
安卓开发:从系统相册选择照片
安卓开发:使用手机拍照功能
一、获取文件的内容,并转换成Base64的字符串
我们以图片为例,假设我们已经获得了图片对象:Bitmap bitMap;//图片文件对象
然后,我们需要获得该文件的byte数组形式的内容数据:
ByteArrayOutputStream bos=new ByteArrayOutputStream(); bit.compress(Bitmap.CompressFormat.JPEG, 40, bos);//第二个入参表示图片压缩率,如果是100就表示不压缩 byte[] bytes=bos.toByteArray();
最后,将byte数组转换为base64字符串:
String s = Base64.encodeToString(bytes, Base64.DEFAULT);
可以将上面的代码片段封装为一个方法,只要传入图片对象,返回字符串即可:
/**在该方法的返回值中,我们得到了字符串形式的图片内容,接下来就是把这个内容发送到服务器了。
* 通过Base32将Bitmap转换成Base64字符串
* @param bit
* @return
*/
public String Bitmap2StrByBase64(Bitmap bit){
ByteArrayOutputStream bos=new ByteArrayOutputStream(); bit.compress(Bitmap.CompressFormat.JPEG, 40, bos);//第二个入参表示图片压缩率,如果是100就表示不压缩 byte[] bytes=bos.toByteArray();
return Base64.encodeToString(bytes, Base64.DEFAULT);
}
二、向服务器发送请求
关于如何向服务器发送请求,请参考以下文章:安卓开发:使用AsyncTask异步向服务器发起request请求
相关文章推荐
- 基于Swift的iOS应用程序开发:以Base64字符串形式上传文件——从iOS选择文件并上传
- JQuery文件上传及以Base64字符串形式呈现图片
- Android大文件上传秒传之MD5篇 http://www.apkbus.com/blog-822715-76972.html (出处: 安卓巴士 - 安卓开发 - Android开发 - 安卓 -
- 以Base64字符串形式上传文件——在web浏览器端使用原生Javascript及Ajax读取本地文件并发送请求到服务器
- [置顶] Android开发之将图片文件转化为字节数组字符串,并对其进行Base64编码处理
- 以Base64字符串形式上传文件——服务器端Java/Servlet接受请求数据中的字符串内容并转换成文件
- Android开发入门之网络通信(通过HTTP协议实现文件上传)
- Android开发 打开文件 选择文件对话框
- Android应用开发之使用Socket进行大文件断点上传续传
- Android+struts2实现文件图片上传,附源码(侧重服务端开发)
- Android开发--身高体重指数(BIM)计算--访问标识符号(android:id属性/XML说明文件与R.java资源文件/将字符串抽离XML/新增XML文件)
- Android应用开发之(你必须知道的“文件上传时显示进度的
- Android应用开发之使用Socket进行大文件断点上传续传
- android开发 使用HttpClient访问网络,post、get方式。注册、登陆、上传文件。
- ANDROID以流形式上传文件
- Android开发心得——网页通过webview调用Android的图片或文件选择
- 【Android 应用开发】Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组
- android 手机拍照上传项目的开发-----Camera1.2(图片文件的翻转及缩放操作)
- Android应用开发之(你必须知道的“文件上传时显示进度的解决方案”)
- 【Android 应用开发】Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组