编写一个财务相关的web应用软件,在某步需要实现对查询的数据进行excel文件生成
现在通过用jxl开源包实现了在本地服务器的文件生成。但是若别的客服端点击生成excel文件的时候,文件还是生成在服务器的硬盘上。
如果才能实现在客服端本地生成相应文件呢?
并且如果才能达到最大的人性化呢?
比如用户可以自己选定文件生成路径
谢谢

解决方案 »

  1.   

    怎么也是生成到服务器,然后用二进制流发送到客户端,客户下载。
    直接跑到客户端生成,可能性不大,要么你就可个客户端插件,activex或者applet,这些东西都不建议使用,老老实实在服务器段生成比较好,如果生成信息的数据变动不大,还可以利用缓存提高效率。
      

  2.   

    在服务器端把文件转换成输出流,写入到response,以response把文件带到浏览器,由浏览器来提示用户是否愿意保存文件到本地。(示例如下)
     response.setContentType(fileminitype);
     response.setHeader("Location",filename);
     response.setHeader("Cache-Control", "max-age=" + cacheTime);
     response.setHeader("Content-Disposition", "attachment; filename=" + filename); //filename应该是编码后的(utf-8)
     response.setContentLength(filelength);
     OutputStream outputStream = response.getOutputStream();
     InputStream inputStream = new FileInputStream(filepath);
     byte[] buffer = new byte[1024];
     int i = -1;
     while ((i = inputStream.read(buffer)) != -1) {
      outputStream.write(buffer, 0, i);
      }
     outputStream.flush();
     outputStream.close();
     inputStream.close();
     outputStream = null;