我正在使用Spring 3.x库创建这个应用程序。现在,我们有一个下载页面,其中包含'n'个链接,其中'n'通常大于10。 我所做的是我创建了一个URL模式,如:
/sec-download.do?p=10001
单击下载链接会调用执行某些验证的控制器,然后生成可由浏览器下载的有效CDN链接。以下是示例代码段:
protected ModelAndView handleRequestInternal(final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final Map<String, Serializable> secureAssetModel = new HashMap<String, Serializable>();
String downloadComponent = getRequestHelper().getStringParameterOrAttribute(request, ExtWebConstants.REQUEST_PARAM_DOWNLOAD_COMPONENT, "");
ModelAndView resultView = null;
if (downloadComponent == StringUtils.EMPTY) { // For regular web downloads.
String requestParamsEncoded = getServetRequestHelper().getStringParameterOrAttribute(request, ExtWebConstants.REQUEST_PARAM_DOWNLOAD, "");
String requestParamsDecoded = new String(Base64.decode(requestParamsEncoded.getBytes()));
<snip>......<snip>
<snip>......<snip>
<snip>......<snip>
resultView = getWebResultView(errorType, requestParamsDecoded, request);
}
return resultView;
}
private ModelAndView getWebResultView(final DownloadErrorType errorType, final String requestParamsDecoded, final HttpServletRequest request) {
ModelAndView resultView = null;
final Map<String, Serializable> secureAssetModel = new HashMap<String, Serializable>();
String downloadURL = downloadService.getEvalDownloadLink(filePath);
<snip>......<snip>
<snip>......<snip>
<snip>......<snip>
resultView = new ModelAndView("redirect:" + downloadURL);
return resultView;
}
方法getWebResultView()的变量downloadURL获取实际的下载链接(http://download.xyz.com/xxx.exe?p=111),该链接作为重定向URL包装在ModelAndView中。这个modelandView最终从方法handleRequestInternal()返回。
现在,问题在于对于FF和Chrome,一旦我点击下载链接,浏览器下载弹出窗口就会打开并要求用户保存它(所有这些时间都在同一页面上)。 但是,在Internet Explorer上,视图会重定向到另一个页面,然后开始下载。这意味着要下载下一个文件,用户必须点击浏览器后退按钮并开始下一次下载。
我知道这可能是因为我实际上是重定向到下载网址。想知道我是否可以在MSIE中使用类似于FF和chrome的行为,以便它可以在停留在同一页面时下载文件?
非常感谢任何投入。 问候。