Wicket:如何为 ResourceStream 下载设置动态文件名(带时间戳)
Wicket: how do I set dynamic fileName (with timestamp) for ResourceStream download
我正在尝试实现对每次下载 csv 文件时为我的 IResource 动态设置文件名的支持。
到目前为止,我已将我的作品附在下面。这是为每次下载覆盖和设置自定义文件名的正确方法吗?有一个方法 setFileName 也被列为一个选项。
有人可以告诉我推荐哪个(setResponseHeaders 或 setFileName)以及如何最好地实施吗?我是检票口的新手,仍在寻找出路。
protected <T extends Object> IResource exportResource(String fileName, final IDataExporter exporter, final DataTable<T, String> table)
{
final String file = fileName;
final ResourceStreamResource resource = new ResourceStreamResource()
{
@Override
protected IResourceStream getResourceStream()
{
return new DataExportResourceStreamWriter(dataExporter,table);
}
@Override
protected void setResponseHeaders(ResourceResponse data, Attributes attributes) {
String pattern = "yyyy-MM-dd_HH:mm:ss";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
String timestamp = simpleDateFormat.format(new Date());
String fileName = file.substring(0, file.indexOf(".csv"))+"_"+timeStamp+".csv";
data.setFileName(fileName);
super.setResponseHeaders(data, attributes);
}
}
提前致谢。
您的实施会很好!要设置文件名,您可以覆盖任何允许您访问 ResourceResponse
.
的方法
我正在尝试实现对每次下载 csv 文件时为我的 IResource 动态设置文件名的支持。
到目前为止,我已将我的作品附在下面。这是为每次下载覆盖和设置自定义文件名的正确方法吗?有一个方法 setFileName 也被列为一个选项。 有人可以告诉我推荐哪个(setResponseHeaders 或 setFileName)以及如何最好地实施吗?我是检票口的新手,仍在寻找出路。
protected <T extends Object> IResource exportResource(String fileName, final IDataExporter exporter, final DataTable<T, String> table)
{
final String file = fileName;
final ResourceStreamResource resource = new ResourceStreamResource()
{
@Override
protected IResourceStream getResourceStream()
{
return new DataExportResourceStreamWriter(dataExporter,table);
}
@Override
protected void setResponseHeaders(ResourceResponse data, Attributes attributes) {
String pattern = "yyyy-MM-dd_HH:mm:ss";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
String timestamp = simpleDateFormat.format(new Date());
String fileName = file.substring(0, file.indexOf(".csv"))+"_"+timeStamp+".csv";
data.setFileName(fileName);
super.setResponseHeaders(data, attributes);
}
}
提前致谢。
您的实施会很好!要设置文件名,您可以覆盖任何允许您访问 ResourceResponse
.