2016-10-17 45 views
0

我有這個Web服務從電子郵件文件下載回來(我下載提供網址):設置消息到文件下載空白頁從Web服務

@Override 
@PreAuthorize("hasRole('ROLE_ADMIN')") 
@RequestMapping(value = { "download"}, method = RequestMethod.GET) 
public void downloadFile(HttpServletResponse response, @RequestParam(value="filePath", required = true) String filePath) { 
    try{ 
     File file = new File(filePath); 
     if (file.isFile()){ 
      try(InputStream is = new FileInputStream(file.getAbsolutePath())){ 
       setResponse(response, is, file, "attachment; filename="); 
      }catch (Exception e1){ 
       ErrorResponse errorResponse= ErrorResponseBuilder.buildErrorResponse(e1); 
       LOG.error("Threw exception in FleetAndCarControllerImpl::downloadStatisticalFile :" + errorResponse.getStacktrace()); 
      } 
     }else{ 
      //TODO write that file is not present 
     } 
    }catch (Exception e) { 
     ErrorResponse errorResponse= ErrorResponseBuilder.buildErrorResponse(e); 
     LOG.error("Threw exception in FleetAndCarControllerImpl::downloadStatisticalFile :" + errorResponse.getStacktrace()); 
    } 
} 

和setResponse方法:

private void setResponse(HttpServletResponse response, InputStream is, File file, String useOfFile) throws Exception{ 
     response.setHeader("Expires", "0"); 
     response.setHeader("Cache-Control","must-revalidate, post-check=0, pre-check=0"); 
     response.setContentType(Files.probeContentType(file.toPath())); 
     response.setHeader("Content-Description"," File Transfer"); 
     response.setHeader("Content-Disposition", useOfFile + file.getName()); 
     response.setHeader("Content-Transfer-Encoding"," binary"); 
     long size = Utils.stream(is, response.getOutputStream()); 
     response.addHeader("Content-Length", Long.toString(size)); 
     response.flushBuffer(); 
    } 

它在文件存在時工作正常,現在我想寫一條消息,如果文件不存在,因爲現在用戶查看一個空白頁面,它不知道發生了什麼。 你能幫我嗎?

回答

1

你可以這樣做:

response.sendError(HttpServletResponse.SC_NOT_FOUND, "File was not found"); 

或者更好的發送重定向到一個頁面出現錯誤消息/對下一步做什麼解釋。

+0

我試過,它的工作原理。謝謝。對於重定向我應該使用response.sendRedirect的權利? – luca

+0

對,請參閱HttpServletResponse的javadocs:http://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpServletResponse.html – borowis

相關問題