我想使用java,struts2和ajax下载文件。
在我的html页面上,有一个名为“导出”的按钮,单击该按钮将进行ajax调用,它将执行查询并使用代码创建.xls文件,我想将该文件提供给用户下载而不将其存储在硬盘上。
有谁知道如何在Java中使用struts2和ajax来做到这一点?
有没有可用的例子?
如果您需要我提供更多详细信息,请告诉我…
谢谢。
amar4kintu
在这种情况下,您不必使用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()传递数据。
public InputStream getInputStream()
我认为无论您使用什么库来生成Excel文件(POI?),都可以将输出写入任意文件OutputStream。
OutputStream
一种将其转换为的快捷方法InputStream:
InputStream
// Using Workbook from Apache POI for example... Workbook wb; // ... ByteArrayOutputStream bos = new ByteArrayOutputStream(); wb.write(bos); InputStream bis = new ByteArrayInputStream(bos.toByteArray());