java - 使用 Spring Boot RestController 下载多个 pdf 文件

标签 java spring-boot

我正在尝试使用 Spring Boot RestController 下载多个 pdf 文件。但由于某种原因,只下载了第一个文件。该程序不会抛出任何错误。不确定问题是什么。是否需要 Multipart?

@RequestMapping(value = "downloadAgain", method = RequestMethod.GET)
@ResponseBody
public void newRun(HttpServletResponse response) {

        String fileName1="pdf1.pdf";
        String fullName1="C://Users//pdf1.pdf";
        newDownloadRun(response,fileName1,fullName1);

        String fileName2="pdf2.pdf";
        String fullName2="C://Users//pdf2.pdf";
        newDownloadRun(response,fileName2,fullName2);
    }


    public void newDownloadRun(HttpServletResponse response,String fileName,String fullName) {

        response.setContentType("application/pdf");
        response.setHeader( "Content-Disposition", "attachment;filename="+ fileName );

        response.setHeader("Content-disposition", "attachment; filename=" + fileName);

        try {
            BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());
            FileInputStream fis = new FileInputStream(fullName);
            int len;
            byte[] buf = new byte[1024];

            while((len=fis.read(buf))> 0) {
                bos.write(buf,0,len);
            }
            bos.close();
            response.flushBuffer();
        }catch(Exception ex) {
            ex.printStackTrace();
        }   
    }

最佳答案

Http 协议(protocol)旨在为每个请求发送一个文件。如果您想发送多个文件,您需要将其准备为多部分/相关的。看看这篇文章https://www.motobit.com/tips/detpg_multiple-files-one-request/

关于java - 使用 Spring Boot RestController 下载多个 pdf 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61000268/

相关文章:

java - rxjava中如何不断地将数据流式传输到客户端?

java - Spring Data Cassandra - 使用 CqlOperations 运行任意 CQL

JavaFX 应用程序类不在 javafx.application 包中

java - 从 Java 中的 TextArea 中提取字符串(使用 EasyApp)

java - 图像没有重新绘制,只是相乘

spring - 是否可以在没有 Redis 的情况下使用 Spring Boot session ?

Java Play Framework 嵌套模板 - 参数传递

java - 我们如何在依赖注入(inject) Controller 中添加值?

java - 使用 Gradle 时 Keycloak 无法加载提供程序类

java - 如何在 Jhipster 中将 List 与 JDL 实体一起使用