私はSpring(Springセキュリティ、Spring Controller e MVC)をベースにしたプロジェクトを持っていますので、HTMLページではファイルのダウンロードを許可する必要があります。ブラウザのファイルをサーバーからRest Webサービスを経由してダウンロード
<a href="#" target="'+row.idCar+'" id="logName" name="logDownload"> <i class="fa fa-file-text-o fa-2x" aria-hidden="true"></i></a>'
私はイベントを処理し、私のコントローラでjquery plugin
var input = $(this),
idCar= $(this).attr('target');
$.fileDownload("../download/" + idCar , {
successCallback: function (url) {
},
failCallback: function (HttpServletResponse, url) {
notifyMessage("Error downloading file", 'error');
}
});
return false; //this is critical to stop the click event which will trigger a normal file download!
に基づいて、このコードを使用します:
@Override
@RequestMapping(value="/download/{idCar}", method = RequestMethod.GET)
public void download(HttpServletResponse response, @PathVariable("idCar") int idCar) {
try{
File file = fleetAndCarService.getLogFile(idCar);
try(InputStream is = new FileInputStream(file.getAbsolutePath())) {
response.setHeader("Set-Cookie", "fileDownload=true; path=/");
response.setHeader("Content-Disposition",
"attachment; filename=\"" + "AcquisitionLog.txt" + "\"");
org.apache.commons.io.IOUtils.copy(is,
response.getOutputStream());
response.flushBuffer();
} catch (Exception e1) {
ErrorResponse errorResponse= ErrorResponseBuilder.buildErrorResponse(e1);
LOG.error("Threw exception in FleetAndCarControllerImpl::download :" + errorResponse.getStacktrace());
}
}catch(Exception e){
ErrorResponse errorResponse= ErrorResponseBuilder.buildErrorResponse(e);
LOG.error("Threw exception in FleetAndCarControllerImpl::download :" + errorResponse.getStacktrace());
}
}
をしかし、それは春のセキュリティのように問題を持って、この上のユーザーのクリックが この投稿x-frameとInternet Explorerでは動作しません。 プラグインを使用せずにサーバーに保存されているファイルをダウンロードする方法はありますか? おかげ
はを解決済み:Hansrajが助けてくれたし、これは、作業コードです:私は、WebサービスのURLとHREFを使用HTMLで
try{
File file = fleetAndCarService.getLogFile(idCar);
try(InputStream is = new FileInputStream(file.getAbsolutePath())){
response.setHeader("Expires", "0");
response.setHeader("Cache-Control","must-revalidate, post-check=0, pre-check=0");
response.setContentType("text/plain");
response.setHeader("Content-Description"," File Transfer");
response.setHeader("Content-Disposition","attachment; filename="+"AcquisitionLog.txt");
response.setHeader("Content-Transfer-Encoding"," binary");
long size = Utils.stream(is, response.getOutputStream());
response.addHeader("Content-Length", Long.toString(size));
response.flushBuffer();
}catch (Exception e1){
ErrorResponse errorResponse= ErrorResponseBuilder.buildErrorResponse(e1);
LOG.error("Threw exception in FleetAndCarControllerImpl::download :" + errorResponse.getStacktrace());
}
}catch (Exception e) {
ErrorResponse errorResponse= ErrorResponseBuilder.buildErrorResponse(e);
LOG.error("Threw exception in FleetAndCarControllerImpl::download :" + errorResponse.getStacktrace());
}
。 Utilsはこのクラスで提案されたクラスですpost
このサンプルを試すことができますかどのようなエラーが出ますか? –
がエラーで動作し、エッジダウンロード時に私に与えられません SCRIPT5009: 'goToLocalizedErrorPage'が未定義です。forbidframingedge.htm(13,15)、エクスプローラが起動せず、エラーが表示されません。 – luca