我想使用java、struts2和ajax进行文件下载。
在我的 html 页面上有一个名为“导出”的按钮,单击该按钮将进行 ajax 调用,这将执行查询并使用代码创建 .xls 文件,我想将该文件提供给用户下载而不存储它在硬盘上。
有谁知道如何在 java 中使用 struts2 和 ajax 来做到这一点?
有没有例子?
如果您需要我提供更多详细信息,请告诉我...
谢谢。
amar4kintu
最佳答案
在这种情况下您不必使用 AJAX。只需让您的按钮将表单提交给您的 Struts 操作,并让操作使用 stream result类型。
例子:
在您的 Struts XML 中:
<result name="download" type="stream">
<param name="contentDisposition">attachment;filename=report.xls</param>
<param name="contentType">application/vnd.ms-excel</param>
<param name="inputName">inputStream</param>
<param name="bufferSize">1024</param>
</result>
然后您的操作将提供一个 public InputStream getInputStream()
来传递数据。
我假设无论您使用什么库生成 Excel 文件(POI?)都可以将输出写入任意 OutputStream
。
将其转换为 InputStream
的快捷方式:
// Using Workbook from Apache POI for example...
Workbook wb;
// ...
ByteArrayOutputStream bos = new ByteArrayOutputStream();
wb.write(bos);
InputStream bis = new ByteArrayInputStream(bos.toByteArray());
关于java - 使用 Java、Struts 2 和 AJAX 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2122490/