Android上传图片到服务器,android-async-http上传图片到服务器
16lz
2021-01-23
背景:最近遇到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=uploadFiles";try {String imageUrl="/storage/sdcard0/upload/yellow.jpg";RequestParams params=new RequestParams();//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 fileMap = multipartRequest.getFileMap();//遍历多媒体文件 for (Map.Entry 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,到此为止
更多相关文章
- [Android] 文件夹下文件的个数限制
- Android之Telephony各文件解释
- Android 自定义View及其在布局文件中的使用示例(二)
- android UI设计之 背景透明色 项目资源文件关系
- android文件系统制作教程
- android通过USB的MTP模式下,禁止用户在根目录有任何操作(重命名 删
- android 驱动文件权限设置