2017-10-13 3871 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(); 
相關問題