2016-03-24 12 views
2

JavaのバックアップWebscriptの中のAlfrescoリポジトリにドキュメント(PDF)をインポートする際に問題があります。私はContentServiceの作家を使用しています。 私が使用している場合はファイルをAlfrescoにプログラムでインポートする(JavaのバックアップWebscriptを使用)

ContentWriter writer = ContentService.getWriter(nodeRef, ContentModel.PROP_CONTENT, true); 
writer.setEncoding("UTF-8"); 
writer.setMimetype("application/pdf"); 
writer.putContent(new String(byte [])); 

または

writer.putContent(new String(byte [], "UTF-8")); 

私の文書がプレビュー可能ではありません(私は他の場合に何が起こるか分からない、いくつかの小さなPDFファイルで試してみました、空白のPDFファイルを参照してください/大きなファイル)。 しかし、別のputContentメソッドを使用してFileを引数として使用すると、ドキュメントを正常にインポートできます。

writer.setEncoding("UTF-8"); 
writer.setMimetype("application/pdf"); 
writer.putContent(File); 

私はBase64でエンコードされた文字列としてファイルを取得しますが、私は、私が行方不明ですか分からないので、ディスクからファイルをインポートする必要はありません。

+1

はあなたのコードですか? writer.putContent(new String(byte [])); InputStreamでputContentを試すことができます。 "Base64 encoded String"では何をやっていますか? –

+0

申し訳ありませんが変数名を省略しようとしましたが、質問を編集してより明確にします。 TBH私は引数としてInputStreamを使用しようとしなかった、私はしようとします。私はApache Base64.decodeBase64()を使ってストリームをデコードします。それはファイルを生成するためにその出力を使用して以来うまくいきます(私が問題に書いた第2のシナリオではインポートに使用されます)。 – Miki

+0

Meikoに気付くと、InputStreamを引数として使うと再現性が良くなります。バイト配列から文字列を作成するときに何が問題になったのかは分かりません。どうもありがとう。答えを書いてください、私はそれをupvoteします。 – Miki

答えて

4

のパラメータとしてInputStreamを使用できます。したがって、文字列のバイト配列への変換(およびその逆)の変換を防ぐことができ、エンコーディングが困難になります。

writer.putContent(new ByteArrayInputStream(Base64.decodeBase64("yourBase64EncodedString"))) 
関連する問題