读取从java服务器生成的DOCX文件时出错

时间:2013-04-19 10:42:01

标签: java

在服务器端,我有一个正确的DOCX文件。我有Java代码从磁盘读取文件并通过JSP刷新它。

当我下载文件时,Office表示该文件包含错误。这是我的JSP中的代码:

    File dir = new File("c:\\file_test.docx");
    FileInputStream fin = new FileInputStream(dir);
    byte fileContent[] = new byte[(int)dir.length()];
    fin.read(fileContent);
    fin.close();
    response.setHeader("Content-Disposition", "attachment;filename=file_test.docx");
    response.setContentLength((int)dir.length());
    response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document; charset=utf-8");
    response.getOutputStream().write(fileContent);
    response.getOutputStream().flush();

我发现下载的文件末尾包含一个空行。如果我用记事本打开文件并删除空格,文件将正确打开。

我的问题是,在JSP中,如何删除二进制文件末尾的空格?我试图在文件中包含除最后一个之外的所有字节,但这不起作用。

If I delete the line 6238, Office opens the file correctly. Edited with Notepad++

如果我删除第6238行,Office会正确打开文件。用Notepad ++编辑

我需要你的帮助!

1 个答案:

答案 0 :(得分:3)

JSP在不小心的情况下输出文本。

结束于:

%>

没有任何关注,即没有换行

或者将它变成一个servlet。