安卓使用OKhttp上传图片到服务器,附带服务端代码

安卓使用OKhttp上传图片并带参数到服务器


安卓端上传图片和参数需要请求网络,OKhttp替代了最早的写法,使用起来很方便,这篇博客主要就是OKhttp的部分和服务端的代码,服务端采用Java web的方式接收数据。
关于配置服务端的java、MySQL和Tomcat可以移步我的另一篇博客。

手动搭建一个Java web运行环境


安卓部分

需要知道的一点就是在安卓中类似耗时过长的任务都是在子线程中,所以最好是单独写一个类,子线程返回到主线程中就使用handle。


安卓主要代码

OkHttpClient okHttpClient=new OkHttpClient();
for(LocalMedia localMedia:mSelectList) {
    imagpath=localMedia.getCompressPath();
}//这里是图片的路径,选择图片我使用的是GitHub中的XUI框架
//new一个File对象,并传入路径
File file=new File(imagpath);
//这里是设置上传的类型为image,/*是不限制图片格式
RequestBody image=RequestBody.create(MediaType.parse("image/*"),file);
//请求体
RequestBody requestBody=new MultipartBody.Builder()
         .setType(MultipartBody.ALTERNATIVE)//这个很重要,如果是上传图片的同时还需要其他参数,就需要ALTERNATIVE这个属性
         .addFormDataPart("json",json)//参数以json的格式传输
         .addFormDataPart("image",imagpath,image)//第一个参数是服务端接收的标记,第二个是路径,第三个是请求体信息
         .build();
Request request=new Request.Builder()
          .url(地址)//服务端地址,可以使用本地Tomcat,需要保证手机和电脑在同一局域网下,使用servlet接收数据
          .post(requestBody)//post方式提交,这是必须的
          .build();

服务端主要代码

@MultipartConfig
//这里要在servlet的import的下面加上,这个是必须的,可以规定上传的图片的大小
Part part=request.getPart("image");
//使用Part接收图片信息
		
String[] tempArr1 = part.getHeader("content-disposition").split(";");//获取上传的图片的路径
String[] tempArr2 = tempArr1[2].split("=");
String[] fileName = tempArr2[1].replaceAll("\"", "").split("/");//切割得到上传的文件名
String savepath=request.getServletContext().getRealPath("/")+"img/"+fileName[9];
/*
*以上四行是根据我的项目的获取需要的路径,可以根据自己的项目自定
*/

part.write(savepath);//将图片保存在指定的路径
		
String json_tude=request.getParameter("json");//获取上传的参数

以上就可以实现安卓上传图片,至于选择图片这一步可以参考XUI框架,或者百度其他的方式实现。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值