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

ama*_*ntu 9 java ajax jsp struts2 download

我想使用java,struts2和ajax进行文件下载.

在我的html页面上有一个名为"export"的按钮点击将执行ajax调用,该调用将执行查询并将使用代码创建.xls文件,我想将该文件下载给用户而不将其存储在硬盘驱动器上.

有没有人知道如何在java中使用struts2和ajax?

有没有可用的例子?

如果您需要我的更多详细信息,请告诉我......

谢谢.

amar4kintu

Zoo*_*ork 11

在这种情况下,您不必使用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>
Run Code Online (Sandbox Code Playgroud)

然后,您的操作将提供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());
Run Code Online (Sandbox Code Playgroud)