0
Webサービスから返された:設定メッセージは、(私はダウンロード用URLを提供)私は電子メールからのファイルのダウンロードのために、この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();
}
ファイルが存在するときはうまく動作しますが、ファイルが存在しない場合はユーザーが空白のページを表示し、何が起こっているのかわからないため、メッセージを書きたいと思います。 私を助けることができますか?
私は試したことがあり、それは動作します。ありがとう。リダイレクトの場合、私はresponse.sendRedirectを使うべきでしょうか? – luca
右のHttpServletResponseのjavadocを参照してください。http://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpServletResponse.html – borowis