一尘不染

使用Java,Struts 2和AJAX下载文件

jsp

我想使用java,struts2和ajax下载文件。

在我的html页面上,有一个名为“导出”的按钮,单击该按钮将进行ajax调用,它将执行查询并使用代码创建.xls文件,我想将该文件提供给用户下载而不将其存储在硬盘上。

有谁知道如何在Java中使用struts2和ajax来做到这一点?

有没有可用的例子?

如果您需要我提供更多详细信息,请告诉我…

谢谢。

amar4kintu


阅读 452

收藏
2020-06-08

共1个答案

一尘不染

在这种情况下,您不必使用AJAX。只需让您的按钮将表单提交给您的Struts操作,然后使该操作使用流结果类型即可。

例:

在您的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());
2020-06-08