文件下载IOUtils

该代码段展示了如何处理HTTP请求以下载导入模板。通过获取用户信息、检查导入类型,然后根据类型设定文件名,最后设置响应头并读取输出流完成文件下载。模板文件名根据不同的importType分为'专项考核导入模板-按组织.xlsm'和'专项考核导入模板-按层级.xlsm'。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

	@Value("${FILE_PATH }")
	private String FILE_PATH;

    /**
     * 下载导入模板
     *
     * @param response
     * @param request
     */
    @RequestMapping("specialDownloadImportTemplate.do")
    @ResponseBody
    public void specialDownloadImportTemplate(HttpServletResponse response, HttpServletRequest request) {
        FileInputStream inputStream;
        OutputStream outputStream;
        try {
            UserInfoVO user = UserHelper.getUser(request);
            Assert.notNull(user, "未获取到登录用户信息");
            String importType = request.getParameter("importType");
            log.info("下载导入模板 importType:{}", importType);
            if (StringUtils.isBlank(importType)) {
                return;
            }
            //下载的模板名称
            String modelName = "0".equals(importType) ? "专项考核导入模板-按组织.xlsm" : "专项考核导入模板-按层级.xlsm";
            //设置要下载的文件的名称
            response.setHeader("Content-disposition", "attachment;fileName=" + new String(modelName.getBytes("GBK"), "ISO8859-1"));
            //通知客户端文件的MIME类型
            response.setContentType("application/vnd.ms-excel;charset=UTF-8");
            response.setContentType("application/x-msdownload");
            //获取文件的路径
            modelName = "0".equals(importType) ? "SpecialAssessmentOrgTemplate.xlsm" : "SpecialAssessmentLevelTemplate.xlsm";
            //文件的路径
            String filePath = FILE_PATH + modelName;
            log.info("下载导入模板 filePath:{}", filePath);
            inputStream = new FileInputStream(new File(filePath));
            outputStream = response.getOutputStream();
            IOUtils.copy(inputStream, outputStream);
        } catch (Exception e) {
            log.error("下载导入模板 error : " + e.getMessage(), e);
        } finally {
            IOUtils.closeQuietly(inputStream);
            IOUtils.closeQuietly(outputStream);
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值