2017-10-13 3869 views
0

我有,当我试图下载文件此错误消息:UT010006:无法调用的getWriter()的getOutputStream()已经调用

无法处理异常!: 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); 
     } 
    } 

回答

0

我相信问题是,你只output.flush()在try体文件。只有当你在另一个try body中包含的finally体内创建一个异常时,该文件才会关闭。我相信你应该在第一次冲洗后关闭输出。

output.flush(); 
output.close(); 
相关问题