将字节从 openxmlformats-officedocument 写入 Java 中的 docx
Writting bytes from openxmlformats-officedocument to a docx in Java
我有一个网络服务,它获取将 docx 文件保存到内部文件夹的请求。
该请求已经包含我应该保存的文件的字节数组,但是,我正在努力让它工作。
问题:
当我将文件保存到文件夹中并尝试打开 docx 时,它打不开,Word 说由于文件无效而无法打开。
所以,我读过一些帖子说 Word 文档有点压缩,如果是这样,我该如何写入这些字节才能正确生成 docx 文件?
请求中的文件类型是:
application/vnd.openxmlformats-officedocument.wordprocessingml.document
下面是代码。我想它不能使用 FileOutputStream?
private void createAOLocalFile(byte[] document, String fileName) throws AOException {
LOGGER.info("ENTER - createAOLocalFile(fileName: " + fileName + ")");
try (FileOutputStream fileOutputStream= new FileOutputStream(new File(fileName));) {
fileOutputStream.write(document);
LOGGER.info("EXIT - createAOLocalFile");
} catch (IOException ex) {
LOGGER.error(String.format(exceptionMessage, "createAOLocalFile"), ex);
throw new AOException(ex);
}
}
使用 FileOutputStream
没问题,可能是您收到的数据已损坏。尝试使用 Apache POI 打开字节数组。
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.7-beta3</version>
</dependency>
import org.apache.poi.xwpf.usermodel.XWPFDocument;
[...]
byte[] document;
XWPFDocument xWPFDocument = new XWPFDocument(new ByteArrayInputStream(document));
如果此语句抛出异常,那么您收到的是损坏文档的字节数组,那么 Web 服务有问题。
我有一个网络服务,它获取将 docx 文件保存到内部文件夹的请求。 该请求已经包含我应该保存的文件的字节数组,但是,我正在努力让它工作。
问题:
当我将文件保存到文件夹中并尝试打开 docx 时,它打不开,Word 说由于文件无效而无法打开。
所以,我读过一些帖子说 Word 文档有点压缩,如果是这样,我该如何写入这些字节才能正确生成 docx 文件?
请求中的文件类型是:
application/vnd.openxmlformats-officedocument.wordprocessingml.document
下面是代码。我想它不能使用 FileOutputStream?
private void createAOLocalFile(byte[] document, String fileName) throws AOException {
LOGGER.info("ENTER - createAOLocalFile(fileName: " + fileName + ")");
try (FileOutputStream fileOutputStream= new FileOutputStream(new File(fileName));) {
fileOutputStream.write(document);
LOGGER.info("EXIT - createAOLocalFile");
} catch (IOException ex) {
LOGGER.error(String.format(exceptionMessage, "createAOLocalFile"), ex);
throw new AOException(ex);
}
}
使用 FileOutputStream
没问题,可能是您收到的数据已损坏。尝试使用 Apache POI 打开字节数组。
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.7-beta3</version>
</dependency>
import org.apache.poi.xwpf.usermodel.XWPFDocument;
[...]
byte[] document;
XWPFDocument xWPFDocument = new XWPFDocument(new ByteArrayInputStream(document));
如果此语句抛出异常,那么您收到的是损坏文档的字节数组,那么 Web 服务有问题。