admin 管理员组

文章数量: 887173

一:其实pc端和手机端浏览器下载文件是一样的,以流的方式传输,只需要后端设置好response的参数信息即可。上代码。

public void downLoad(HttpServletRequest request, HttpServletResponse response){
        try {
            // 设置响应头和客户端保存文件名
            response.setCharacterEncoding("utf-8");
            //设置文件流下载方式
            response.setContentType("application/octet-stream");
            if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0) {
                fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1"); // firefox浏览器
            } else if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) {
                fileName = URLEncoder.encode(fileName, "UTF-8");// IE浏览器
            }else if (request.getHeader("User-Agent").toUpperCase().indexOf("CHROME") > 0) {
                fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");// 谷歌
            }
            response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
            // 读取目标文件,通过response将目标文件写到客户端
            // 读取文件
            String url=path;
            System.out.println(url);
            InputStream in = new FileInputStream(url);
            OutputStream out = response.getOutputStream();
            // 写文件
            int b;
            while ((b = in.read()) != -1) {
                out.write(b);
            }
            in.close();
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

ps:

首先设置设置响应方式为流:

response.setContentType("application/octet-stream");

其次设置不同浏览器的编码格式

这样在浏览器中请求对应地址即可自动下载文件。

本文标签: 浏览器 文件 方法 手机 PC