我想加载最大50MB的zip文件。目前我正在使用以下IModel Object的getObject方法来返回zip文件。
IModel fileModel = new AbstractReadOnlyModel() {
public Object getObject() {
.....
ZipOutputStream zip = null;
FileOutputStream fileWriter = null;
fileWriter = new FileOutputStream(destZipFile);
zip = new ZipOutputStream(fileWriter);
/*Add the zip file in the folder*/
return new File(zipFilePath);
}
以下是下载链接
reportLink = new DownloadLink(this.getString("id.reportslink"),
fileModel) {
private static final long serialVersionUID = 1L;
}
目前JVM堆大小为1GB,如果有20个用户下载文件(假设每个文件50MB),则上面的代码将崩溃。任何人都可以建议,实施下载文件的最佳方式是什么,即使一次用户数达到100,也不会崩溃。
答案 0 :(得分:2)
This建议您在发送给定数量的数据后刷新输出流。
答案 1 :(得分:2)
我建议您使用动态资源而不是简单的DownloadLink。
您将创建自己的AbstractResource实现,在该实现中将文件写入OutputStream,然后创建ResourceLink而不是指向该资源的DownloadLink。
请查看https://wicket-guide.googlecode.com/files/Wicket%20free%20guide.pdf的Wicket免费指南中的第13.6章。