java

从服务器浏览文件或下载文件

 

 

public void getOutFile(@PathVariable("type")String type,HttpServletRequest request, HttpServletResponse response) throws Exception {

        File f = new File(path);

        if (!f.exists()) {

            response.sendError(404, "File not found!");

            return;

        }

        BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));

        byte[] buf = new byte[1024];

        int len = 0;

 

        response.reset(); // 非常重要

        if (type.equals("online")) { // 在线打开方式

            URL u = new URL("file:///" + path);

            response.setContentType(u.openConnection().getContentType());

            response.setHeader("Content-Disposition", "inline; filename=" + f.getName());

            // 文件名应该编码成UTF-8

        } else { // 纯下载方式

            response.setContentType("application/x-msdownload");

            response.setHeader("Content-Disposition", "attachment; filename=" + f.getName());

        }

        OutputStream out = response.getOutputStream();

        while ((len = br.read(buf)) > 0)

            out.write(buf, 0, len);

        br.close();

        out.close();

    }

你可能感兴趣的:(servlet)