背景:最近遇到Android上传图片到服务器,今天研究了一下,还挺简单的,我用的是android-async-http,版本是1.4.4。

工具下载地址:https://github.com/loopj/android-async-http/tree/1.4.6/releases

官网也有介绍:http://loopj.com/android-async-http/

Android源码片段:

private void uploadImage(){//上传请求地址String url="http://172.16.3.129:8082/jd-web/FileUpload.do?cmd=<span style="font-family: Arial, Helvetica, sans-serif;">uploadFiles</span><span style="font-family: Arial, Helvetica, sans-serif;">";</span>try {String imageUrl="/storage/sdcard0/upload/yellow.jpg";RequestParams params=new RequestParams();<span style="white-space:pre"></span>//params.add("cmd","uploadFiles");//接口名//params.add("albumId","93345");//相册ID//上传的时候,下面这个参数是最主要的,就是设置文件的地方,其中put方法的第一个参数的值无所谓,没有什么要求,//开始我一直以为是一个特定的值,然后服务器会根据这个key来取值,后来发现不是,这个可以随便取,//第三个参数"application/octet-stream",也可以不传,我发现服务器端可以自动识别。//params.put("image", new File(imageUrl),"application/octet-stream");params.put("profile_picture", new File(imageUrl));HttpUtil.post(url,params, uploadResponseHander());} catch (FileNotFoundException e) {e.printStackTrace();tvShowLog.setText("参数设置错误");}}/** * 上传回调 * @return */private AsyncHttpResponseHandler uploadResponseHander(){return new AsyncHttpResponseHandler(){@Overridepublic void onSuccess(int statusCode, Header[] headers, byte[] responseBody){String content=new String(responseBody);tvShowLog.setText("上传完成:"+content);}@Overridepublic void onFailure(int statusCode, Header[] headers,byte[] responseBody, Throwable error){tvShowLog.setText("上传失败");}};}


服务器端源码片段:

@RequestMapping(params="cmd=uploadFiles")@ResponseBodypublic JsonResult uploadFiles(@RequestParam Integer albumId,HttpServletRequest  request, HttpServletResponse response){JsonResult jsonResult = new JsonResult(true);try {//转换request为MultipartHttpServletRequest  MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;  //获取文件集合 Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();//遍历多媒体文件  for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {//获取多媒体文件信息MultipartFile mf = entity.getValue();  //获取字节数组,这个是最重要的,这个字节数组就是刚才上传的文件转换而成的byte[] bytes = mf.getBytes();//获取上传的文件的名字String fileName = mf.getOriginalFilename();  }} catch (Exception e) {}return jsonResult;}

可以使用Spring的Util包中FileCopyUtils工具类,将此字节数组保存成本地的图片文件:

FileCopyUtils.copy(mf.getBytes(), “D:\ImageUpload\xxx.jpg);

OK,到此为止


更多相关文章

  1. 导入Android工程遇到的问题
  2. Android(安卓)zipalign: error while loading shared libraries:
  3. Android(安卓)Studio NDK及so文件开发 以及常见错误
  4. Android(安卓)读取sdcard指定目录文件
  5. Android从远程服务器下载文件到本地sd卡中
  6. Android(安卓)Device Monitor无法查看data目录解决办法
  7. 小白学习android(一):android开发常识问题
  8. 箭头函数的基础使用
  9. NPM 和webpack 的基础使用

随机推荐

  1. Android(安卓)BLE蓝牙开发中读取数据时设
  2. Android系统移植-按键移植
  3. Android(安卓)上调试 webkit framework
  4. 2.4 ImageView
  5. android转屏,切换屏幕,横竖屏(onConfigurati
  6. 学Android(安卓)Space控件,只看这篇文章就
  7. Android(安卓)Chronometer运用
  8. Android(安卓)的NumberPicker相关问题
  9. android 源码环境 启动模拟器
  10. android media service