2017-07-31 8 views
0

docxファイルを内部フォルダに保存する要求を受け取ったWebサービスがあります。 要求にはすでにファイルのバイト配列が保存されていますが、動作させるためには苦労しています。openxmlformats-officedocumentからJavaのdocxにバイトを書き込む

問題:私は、フォルダにファイルを保存し、docxファイルを開こうとすると
、それが開いていない、と言葉は、それが無効なファイルを開くことができないと言います。

Word文書は、もしあれば、正しく、docxファイルを生成するためにそれらのバイトを書くことができますか?

要求内のファイルのタイプがある:

アプリケーション/ 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); 
    } 
} 
+0

zipツールを使用してファイルを解凍できますか? – JasonPlutext

答えて

0

多分あなたの受信データが破損している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サービスに何か問題があります。

+0

ありがとうVeli!私がPOIを使い始めるとうまくいきます。非常に価値のある。 –

+0

上記の貴重な答えに加えて、私はFTP APIを通してアップロードされていたファイルのタイプを設定しなければなりませんでした。デフォルトではASCIIであり、ftp.setFileType(FTP.BINARY_FILE_TYPE)メソッドを使用すると簡単に変更できます。これは、docxとxlmsドキュメントを扱うときに便利です。 –

関連する問題