2012-08-02 805 views
4

我想从富表数据表中导出数据我已经从数据表中的数据创建了outputStream。现在要发送这个OutputStream到浏览器并让它保存。我怎样才能做到这一点?发送OutputStream到浏览器并让浏览器保存它

FileOutputStream stream = new FileOutputStream(new File(PATH));

OutputStream out = myMthodToCreateOutPutStream();

现在该怎么保存这个out到浏览器。

回答

12

目前还不清楚您在哪里阅读您的数据。您需要创建一个InputStream来读取数据。

然后,您首先需要将响应头设置为

HttpServletResponse.setHeader("Content-Disposition", "attachment; filename=datafile.xls"); 

使用任何你需要的文件名。

然后设置MIME类型:

response.setContentType("application/vnd.ms-excel"); 

使用MIME类型,你需要。

这时需要使用响应对象来获取它的OutputStream -

OutputStream outStream = response.getOutputStream(); 

现在写它:

byte[] buf = new byte[4096]; 
int len = -1; 

//Write the file contents to the servlet response 
//Using a buffer of 4kb (configurable). This can be 
//optimized based on web server and app server 
//properties 
while ((len = inStream.read(buf)) != -1) { 
    outStream.write(buf, 0, len); 
} 

outStream.flush(); 
outStream.close(); 
+0

这个答案给了我一个提示,以解决我的问题..非常感谢 – 2012-08-05 08:51:01