zoukankan      html  css  js  c++  java
  • android 获取服务器文件流 hander

    引用:http://blog.csdn.net/join_wangzi/article/details/7701556

    http://www.cnblogs.com/quanjia/archive/2010/11/01/1866753.html

    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;
    }
  • 相关阅读:
    E-R图转换成关系模型
    折叠表格
    ICE在Linux下的安装
    yum 安装gcc
    dll和so文件区别与构成
    linux进入图形界面的方法
    ACE vs Boost: Singleton的实现
    ACE与ASIO之间关于Socket编程的比较
    Linux 下编译安装ACE时遇到的问题及解决
    Linux下安装、配置ACE
  • 原文地址:https://www.cnblogs.com/sode/p/2860263.html
Copyright © 2011-2022 走看看