论前后台如何实现web中文件下载功能

web中的许多功能不仅仅依靠后台实现,前台的功能也十分强大,操作使用便捷,今天就看到了一个令人心服口服的案例,所以赶紧记下。下次再遇见,至少可以节省五分钟。
下载功能相信在很多的场景中都需要用到。
看今天我作为后台人员如何实现下载功能,废话不多说,直接上代码:
控制器代码

/** * 下载批量插入用户信息的模板 * @param response * @param userId * @param password */
    @RequestMapping(value = "/loadxls")
    public void loadxls(HttpServletResponse response,HttpServletRequest request, String userId, String password) {
        InputStream fis = null;
        try {
            String filename=request.getSession().getServletContext().getRealPath("/ExcelFile")+"/用户导入模板.xls";
            File file = new File(filename);
            fis = new BufferedInputStream(new FileInputStream(file));
            byte[] buffer = null;
            buffer = new byte[fis.available()];
            fis.read(buffer);
            fis.close();
            response.reset();
            // 先去掉文件名称中的空格,然后转换编码格式为utf-8,保证不出现乱码,这个文件名称用于浏览器的下载框中自动显示的文件名
            response.addHeader("Content-Disposition",
                    "attachment;filename=" + new String(filename.replaceAll(" ", "").getBytes("utf-8"), "iso8859-1"));
            response.addHeader("Content-Length", "" + file.length());
            OutputStream os = null;
            os = new BufferedOutputStream(response.getOutputStream());
            response.setContentType("application/octet-stream");
            os.write(buffer);
            os.flush();
            os.close();
        } catch (FileNotFoundException e) {
            LOGGER.error(e.getMessage(), e);
        } catch (IOException e) {
            LOGGER.error(e.getMessage(), e);
        }
    }

前台利用按钮调用:

//批量新增用户
function loadXls(){ 
    window.location.href = ctx + "/loadxls.do";
}

效果截图:
《论前后台如何实现web中文件下载功能》
上面虽然实现了,但是如此繁琐。且看前台如何实现
前台代码:

请选择包含用户信息的excel文件(<a href="${rootPath}/ExcelFile/用户导入模板.xls" style="color: #5ba5fc;">下载导入模板</a>

效果截图:
《论前后台如何实现web中文件下载功能》
最后重要的一点就是一定提前将准备好的用户导入模板放到webapp/webContent下,我这放在webapp下的ExcelFile的文件夹下。

    原文作者:醉蝶依
    原文地址: https://blog.csdn.net/qq_27949963/article/details/54286957
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞