无法使用Java中的ServletOutputStream生成多个文档

时间:2017-09-11 09:54:36

标签: java outputstream

我正在尝试使用ServletOutputStream按序列生成文档。我总共有4份文件。我把这些作为一个字符串数组,然后迭代数组,以获得每个。但只有第一份文件被刷新,但其他三份文件没有被刷新。当我调试时,它正在执行所有行,但不知道为什么剩下的三个没有下载。这是我的代码

流程是

当我指向“my_server / api / getDocs?tkey = abc”时,它将从实现中进行一次外部Web服务调用。在那之后,我将检查我是否收到了OK状态。如果我状态良好,我必须生成4个文档。

public ResultDto getDocs(HttpServletResponse response,@PathVariable("tKey") String tKey) throws ClassNotFoundException, IOException {
    logger.debug(tKey);

        ResultDto result = new ResultDto();     
        result = myService.confirmTransaction(tKey);
        if(QBConstants.OK.equals(result.getStatus())) {
            String[] documents = {"2","3","4","5"};// 

            for (String documentKey: documents) {           

                    byte[] documentBytes =  myService.generateDocument(tKey, documentKey);
                    String documentType = myUtil.getDocumentType(documentKey);
                    response.setHeader("Content-Disposition", "attachment;filename="+documentType);
                    response.setContentType("application/pdf");
                    response.setHeader("Expires", "0");
                    response.setHeader("Cache-Control", "must-revalidate, postcheck=0, pre-check=0");
                    response.setHeader("Pragma", "public");
                    response.setContentLength(documentBytes.length); 
                    ServletOutputStream out = response.getOutputStream();
                    out.write(documentBytes);
                    out.flush();
                    out.close();
                    logger.debug("********** DOCUMENT GENERATED **********");

            } 
          }


    }
    return result;      

并且无法接收返回数据。我想要刷新以及获取结果对象。在刷新文档逻辑之前,我能够获得结果对象。

非常感谢任何想法。

0 个答案:

没有答案