首页 > 解决方案 > JSP生成文件而不开始空行

问题描述

好吧,我有一个简单的 JSP 文件,我在其中输出了一个 XML/XHTML 文档,以便您可以下载它。

<%    
String filename = "FILENAME.<XML/XHTML>";  
response.setContentType("APPLICATION/OCTET-STREAM");   
response.setHeader("Content-Disposition","attachment; filename=\"" + filename + "\"");   

java.io.FileInputStream fileInputStream=new java.io.FileInputStream(FILEPATH);  

int i;
while ((i=fileInputStream.read()) != -1) {  
out.write(i);   
}   
fileInputStream.close();   
%>

问题是,下载的文件总是有一个空行作为第一行。因为它们是 XML/XHTML 文件,所以它们被标记为无效。如果我删除第一行,则文件有效。

我的问题是,如果有人有更好的解决方案,如何使用 JSP 下载文件或输出没有空第一行的文件?

编辑:https ://imgur.com/a/4PuBdVc也许这有助于更好地理解问题。黄色标记线是错误的。

标签: javaxmljspdownload

解决方案


好的,答案很简单。

代替

out.write()

你必须使用 java.io.OutputStream。

response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");

java.io.FileInputStream fileInputStream = new java.io.FileInputStream(FILEPATH);
ava.io.OutputStream outStream = response.getOutputStream();

byte[] buffer = new byte[4096];
int bytesRead = -1;

while ((bytesRead = fileInputStream.read(buffer)) != -1) {
    outStream.write(buffer, 0, bytesRead);
}

fileInputStream.close();
outStream.flush();
outStream.close();

这对我来说很好。


推荐阅读