2016-03-24 10 views
2

Ich habe Probleme beim Importieren von Dokumenten (PDF) in das Alfresco-Repository in java-gesichertem Webscript. Ich benutze den Autor von ContentService. Wenn ichImportieren von Dateien in Alfresco programmatisch (über java-gesichertes Webscript)

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

oder

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

mein Dokument ist nicht die Vorschau angesehen (I leere PDF-Datei zu sehen, die versuchte, mit einigen kleinen PDF-Dateien, nicht wissen, was bei anderen passieren würde/größere Dateien). Aber wenn ich eine andere putContent Methode verwende, die Datei als Argument nimmt, werde ich das Dokument erfolgreich importieren.

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

Ich will nicht Datei von der Festplatte importieren, da ich die Datei als Base64 codiert String bekommen, aber ich weiß nicht, was ich fehlen.

+1

ist das Ihr Code? writer.putContent (neuer String (byte [])); vielleicht könnten Sie putContent mit einem InputStream ausprobieren ... Was machst du mit dem "Base64 codierten String"? –

+0

Sorry, ich habe versucht, den Variablennamen wegzulassen. Ich werde die Frage bearbeiten, um sie klarer zu machen. TBH Ich habe nicht versucht, InputStream als Argument zu verwenden, ich werde es versuchen. Ich entschlüssle den Stream mit Apache Base64.decodeBase64(). Es läuft gut, da ich diese Ausgabe verwende, um eine Datei zu erzeugen (wird für den Import im zweiten Szenario verwendet, das ich geschrieben habe). – Miki

+0

Schön, Meiko zu beachten, es wird in der Vergangenheit gut, wenn InputStream als Argument verwendet. Ich weiß nicht, was beim Erstellen einer Zeichenfolge aus Byte-Array schief gelaufen ist. Danke vielmals. Bitte schreibe eine Antwort und ich werde es aufwerten. – Miki

Antwort

4

Sie könnten einen InputStream als Parameter für ContentWriter::putContent verwenden. Sie verhindern also die Konvertierung von String zu Byte-Array (und umgekehrt), was zu Schwierigkeiten bei der Codierung führt.

writer.putContent(new ByteArrayInputStream(Base64.decodeBase64("yourBase64EncodedString"))) 
Verwandte Themen