java下载Excel文件,提示文件损坏,需要修复

【功能描述】

提供一个接口,下载服务器指定路径下的文件

【修复提示解决办法】

response设定文件大小

response.setHeader("content-Length",String.valueOf(file.length()));

【代码】

【controller】

	@GetMapping(value = "file/download")
    public void downloadFile(@RequestParam("path")String path,HttpServletResponse response){
        boolean result = fileService.downloadFile(path,response);
    }

【service】

public boolean downloadFile(String path, HttpServletResponse response) throws Exception;

【serviceImpl】

@Override
    public boolean downloadFile(String path, HttpServletResponse response) throws Exception {
        File file = new File(path);
        if (!file.exists()) {return false;}
        // 读到流中
        InputStream inputStream = Files.newInputStream(Paths.get(path));// 文件的存放路径
        response.setHeader("content-type", "application/force-download");
        response.setHeader("content-Length",String.valueOf(file.length()));//解决文件提示损坏
        String filename = file.getName();
        //纯下载方式 文件名应该编码成UTF-8
        response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(filename, "UTF-8"));
        ServletOutputStream outputStream = response.getOutputStream();
        byte[] b = new byte[1024];
        int len;
        //从输入流中读取一定数量的字节,并将其存储在缓冲区字节数组中,读到末尾返回-1
        while ((len = inputStream.read(b)) > 0) {
            outputStream.write(b, 0, len);
        }
        inputStream.close();
        outputStream.close();
        return true;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值