android客户端从服务器端下载文件,服务端返回文件流

服务端 strtus:
/**  * 文件下载 : 返回文件流  * @param mapping  * @param actionForm  * @param request  * @param response  * @return  * @throws Exception  */ public ActionForward fileUpload(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws Exception{ logger.debug("fileUpload()"); RequestMap params = WebUtil.getQueryMap(request); String file_key = (String)params.get("filekey", ""); if(file_key != null && !"".equals(file_key)){ NewsPaperManager service = NewsPaperManager.getInstance(); String file_path = service.getFilePath(file_key); if(file_path != null && !"".equals(file_path)){ File file = new File(file_path); if(file.exists()){ InputStream fis = new BufferedInputStream(new FileInputStream(file)); byte[] buffer = new byte[fis.available()]; fis.read(buffer); fis.close(); // 清空response response.reset(); // 设置response的Header response.setHeader("Content-Type", "application/octet-stream"); response.addHeader("Content-Disposition", "attachment;filename=" + file.getName()); response.addHeader("Content-Length", "" + file.length()); OutputStream toClient = response.getOutputStream(); toClient.write(buffer); toClient.flush(); toClient.close(); } } } return null; }


android客户端:
    public byte[] getImage(String path) throws Exception { URL url = new URL("http://120.197.230.53:9902/kuchuan_api/newspaper.do?method=fileUpload&filekey=2LM7vAcHt8iFX2ABTXZT"); HttpURLConnection conn = (HttpURLConnection)url.openConnection();//基于HTTP协议的连接对象 conn.setConnectTimeout(5000);//请求超时时间 5s conn.setRequestMethod("GET");//请求方式 Log.i("ResponseCode", "prepare"); Log.i("ResponseCode", conn.getResponseCode()+""); if(conn.getResponseCode() == 200){//响应码==200 请求成功 InputStream inputStream = conn.getInputStream();//得到输入流 Log.i("ResponseCode", inputStream.toString().length()+""); ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; Log.i("ResponseCode", "inputStream.read(buffer) :"+inputStream.read(buffer)+""); while((len = inputStream.read(buffer)) != -1){ arrayOutputStream.write( buffer, 0, len); Log.i("ResponseCode", "buffer.length :"+buffer.length+"  " + len); } inputStream.close(); arrayOutputStream.close(); Log.i("ResponseCode", "arrayOutputStream.toByteArray().length :"+arrayOutputStream.toByteArray().length+""); } return null; }    

更多相关文章

  1. NPM 和webpack 的基础使用
  2. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  3. item嵌套button使listview onitemClick事件不响应
  4. android 随手记之文件+参数上传请求
  5. Linux/Ubuntu下android设备添加adb驱动
  6. Android(安卓)startActivityForResult的使用
  7. android APK签名过程之CERT.SF分析
  8. 清单文件Manifest中的android:name
  9. Android之录制视频文件

随机推荐

  1. 一个Java对象到底占多大内存?
  2. “你入我麾下,我给你天下”
  3. JeecgBoot低代码快速开发框架,用于生产环
  4. 再肝两夜,写了个「服务器项目部署」实战PD
  5. 给你5分钟白漂:我的常用在线工具网站
  6. 2020 年 Node.js 将会有哪些新功能[每日
  7. 68.查看子进程脚本
  8. Vue.js 中的无渲染行为插槽[每日前端夜话
  9. 关于 Promise 的 9 个面试题[每日前端夜
  10. 超好用的ai文章生成器 智媒ai伪原创平台