我目前在Wicket中使用downloadLink允许用户下载创建的excel文件,然后再删除。当这通过SSL IE完成时给我一个错误: “无法下载。
Internet Explorer无法打开此站点。请求的网站不可用或无法找到。请稍后再试。 “
这里: http://support.microsoft.com/kb/323308
从上面的微软支持链接做一些阅读后,似乎是因为 因为它是通过SSL,我有 response.setHeader("Cache-Control", "no-cache, max-age=0, must-revalidate, no-store");
我设置了我的downloadLink:
private void setupDownloadLink()
{
IModel excelFileModel = new AbstractReadOnlyModel()
{
public Object getObject()
{
return excelCreator();
}
};
auditDownloadlink = new DownloadLink("auditDownloadlink", excelFileModel);
auditDownloadlink.setOutputMarkupPlaceholderTag(true);
auditDownloadlink.setDeleteAfterDownload(true);
auditDownloadlink.setCacheDuration(Duration.NONE);
auditDownloadlink.setVisible(false);
findUserForm.add(auditDownloadlink);
}
However, it seems to work if I do: auditDownloadlink.setCacheDuration(Duration.Minute);
我想我对这件事情感到困惑。 setCacheDuration是否意味着在创建文件后多长时间,它将在删除之前可用?或者这是否意味着文件从声明开始可以获得多长时间?
在excelCreator()方法中我调用File excelfile = new File(“Access.xls”);然后继续处理所有excel工作并创建电子表格,然后在我调用的方法结束时: FileOutputStream output = new FileOutputStream(excelfile); workbook.write(输出); output.close();
我设置的持续时间是从我调用File excelfile = new File(“ssaUserIDAccess.xls”)的那一刻开始的吗?
我应该为此方案使用的最佳持续时间和设置是什么?因为文件可以放弃很大,如果它足够大,可能需要一些时间来创建。
谢谢!
答案 0 :(得分:0)
我不记得原因,但我们在SSL / IE上遇到了同样的问题,我们只是将缓存持续时间设置为1秒即可。只是它不能没有。我们从未找到的另一种解决方案。
auditDownloadlink.setCacheDuration(Duration.ONE_SECOND)