我有一个简单的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这可能有助于更好地理解问题。黄色标记的行是错误的。
答案 0 :(得分:0)
好的答案很简单。
而不是
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();
这对我来说很好。