2016-10-17 68 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