将字节从 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 服务有问题。