使用response下载没反应

2023-09-25 13 0

response.reset();

        File excelFile = new File(filePath);

        // 1.设置文件ContentType类型,这样设置,会自动判断下载文件类型

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

        // 2.设置文件头:处理文件名编码,防止不同浏览器中文的文件名出现乱码

        String headerValue = "attachment;";

        String fileName = "体验馆报名名单.xlsx";

        headerValue += " filename=\"" + fileOperationService.encodeURIComponent(fileName) + "\";";

        headerValue += " filename*=utf-8''" + fileOperationService.encodeURIComponent(fileName);

        response.setHeader("Content-Disposition", headerValue);

        response.addHeader("Content-Length", String.valueOf(excelFile.length()));

        

        // 通过文件流下载

        try {

            InputStream ins = new BufferedInputStream(new FileInputStream(excelFile));

            byte[] buffer = new byte[ins.available()];

            ins.read(buffer);

            ins.close();

            OutputStream ous = new BufferedOutputStream(response.getOutputStream());

            ous.write(buffer);

            ous.flush();

            ous.close();

        } catch (IOException e) {

            e.printStackTrace();

        }

ajax请求只是个“字符型”的请求,即请求的内容是以文本类型存放的。文件的下载是以二进制形式进行的,虽然可以读取到返回的response,但只是读取而已,是无法执行的。 

解决方案,不用ajax:

window.location.href=_contextPath + "/signUp/exportSignUpList.do";

代码编程
赞赏

相关文章

软件工程课堂作业(七)——电梯调度之需求规格说明书
软件工程课堂训练——电梯调度问题需求分析
武汉:社区万家宴热闹开席 万道自制菜肴迎新春
2023年7大最佳免费主机
【白嫖】永久免费的虚拟主机合集
使用VMware扩展Centos磁盘空间(Centos)