【问题标题】:UT010006: Cannot call getWriter(), getOutputStream() already called [duplicate]UT010006:无法调用 getWriter(),getOutputStream() 已调用 [重复]
【发布时间】:2018-03-25 10:45:55
【问题描述】:

我在尝试下载文件时收到此错误消息:

无法处理异常!:java.lang.IllegalStateException: UT010006: 无法调用 getWriter(),getOutputStream() 已调用。

文件已下载,但没有扩展名。所以浏览器问我应该用什么程序来阅读它。

这是我的下载代码:

    InputStream fileIs = null;
    OutputStream output = null;
    try {            
        ExternalContext externalContext = getContext().getExternalContext();
        externalContext.responseReset();
        externalContext.setResponseContentType(fileToDownload.getMetadata().getMimeType());
        externalContext.setResponseContentLength(fileToDownload.getMetadata().getTaille().intValue());
        externalContext.setResponseHeader("Content-Disposition", "attachment; filename=\"" + fileToDownload.getMetadata().getFileName() + "\"");

        output = externalContext.getResponseOutputStream();
        Response repGetFile = ClientBuilder.newClient()
                 .target(fileToDownload.getMetadata().getFileURL())
                 .request().header("Authorization", "Bearer bearercode")
                 .get();

        fileIs = repGetFile.readEntity(InputStream.class);
        int readBytes;
        byte[] buffer = new byte[1024];
        while((readBytes = fileIs.read(buffer)) > 0){
            output.write(buffer, 0, readBytes);
        }
        output.flush();

    } catch (IOException ex) {
        LOG.log(Level.SEVERE, null, ex);
    } finally{
        try {
            fileIs.close();
            output.close();
        } catch (IOException ex) {
            LOG.log(Level.INFO, null, ex);
        }
    } 

【问题讨论】:

  • 请跟踪堆栈。

标签: jsf download


【解决方案1】:

你忘了打电话给:

getContext().responseComplete();

设置标题后。

【讨论】:

  • 写完内容会更有意义。
【解决方案2】:

我认为问题在于您仅 output.flush() 尝试正文中的文件。仅当稍后在您还包含在另一个 try 正文中的 finally 正文中创建异常时,才会关闭该文件。我相信你应该在第一次冲洗后关闭输出。

 output.flush();
 output.close();

【讨论】:

    猜你喜欢
    • 2015-03-24
    • 2012-07-13
    • 2015-09-15
    • 1970-01-01
    • 2016-03-16
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 2019-10-10
    相关资源
    最近更新 更多