当前位置: 代码迷 >> J2EE >> 怎样下载zip文件?该怎么解决
  详细解决方案

怎样下载zip文件?该怎么解决

热度:109   发布时间:2016-04-22 02:54:01.0
怎样下载zip文件???????????????
我想用poi动态生成多个ppt文件,然后打包生成zip文件并下载。
但是我不想把生成的ppt文件保存到磁盘,然后再打包。而是直接在内存中生成文件流,然后打包,怎样做啊????


------解决方案--------------------
探讨
我想用poi动态生成多个ppt文件,然后打包生成zip文件并下载。
但是我不想把生成的ppt文件保存到磁盘,然后再打包。而是直接在内存中生成文件流,然后打包,怎样做啊????

------解决方案--------------------
探讨
那就只能先保存在服务器,然后打包了再传个客户端??这样比内存操作要慢嘢。。

------解决方案--------------------
学习下。。。
------解决方案--------------------
Java code
protected void doPost(HttpServletRequest request,            HttpServletResponse response) throws ServletException, IOException {        // TODO Auto-generated method stub        String sufix = request.getParameter("s");        String path = request.getParameter("p") + "." + sufix;        try {            String fileName = request.getParameter("f").trim();            int c = fileName.lastIndexOf(".");            String name = fileName.substring(0, c > 0 ? c : fileName.length())                    + "." + sufix;            response.setContentType("application/octet-stream");            response.setHeader("Content-Disposition", "attachement;filename="                    + new String(name.getBytes("GBK"), "ISO-8859-1"));            File file = new File(Const.getCurrentUtterlyPath() + path);            if (!file.exists()) {                throw new IOException(fileName + ",所下载的文件不存在!");            }            response.setContentLength(Integer.parseInt(file.length() + ""));            InputStream fs = new FileInputStream(file);            OutputStream os = response.getOutputStream();            byte[] buff = new byte[1024];            int readCount = 0;            while ((readCount = fs.read(buff)) != -1) {                os.write(buff, 0, readCount);            }            if (fs != null) {                fs.close();            }            if (os != null) {                os.close();            }        } catch (IOException e) {            LOG.error("error: " + e.getMessage() + ",path: " + path);            throw e;        }        response.setStatus(response.SC_OK);        response.flushBuffer();    }
------解决方案--------------------
先保存,再打包,最后扔给客户端,这是比较安全的做法。如果都在内存中操作,程序挂掉的可能行很高。
  相关解决方案