2016-03-24 19 views
2

Belgeyi (PDF) java destekli webScript içindeki Alfresco deposuna içe aktarırken sorun yaşıyorum. ContentService yazarı kullanıyorum. Ben kullanırsanızDosyayı Alfresco'ya program aracılığıyla aktarma (java destekli webScript aracılığıyla)

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

veya

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

benim belge önizlenebilmesini değil (diğer durumunda ne olacağını bilmiyorum, birkaç küçük PDF dosyaları ile çalıştı, boş PDF dosyasını bakın/daha büyük dosyalar). Ama Dosyayı argüman olarak alan başka bir putContent yöntemini kullanırsam, belgeyi başarıyla içe aktarırım.

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

ben Base64 kodlanmış dize olarak dosya almak ama ben eksik bilmiyorum çünkü diskten dosya almak istemiyoruz.

+1

kodunuz bu mu? writer.putContent (yeni Dize (bayt [])); belki bir InputStream ile putContent'i deneyebilirsiniz ... "Base64 kodlu String" ile ne yapıyorsunuz? –

+0

Üzgünüm, değişken adını ihmal etmeyi denedim, daha net hale getirmek için soruyu düzenleyeceğim. TBH Ben InputStream argüman olarak kullanmaya çalıştım, deneyeceğim. Apache Base64.decodeBase64() kullanarak akışı çözerim. Dosyayı üretmek için bu çıktıyı kullandığımdan (söz konusu yazdığım ikinci senaryoda içe aktarma için kullanıyorum) iyi gider. – Miki

+0

Meiko'nun güzel olduğunu farketmez, InputStream'i bir argüman olarak kullanırken sadece repostiory'ye girer. Bayt dizisinden bir dize oluştururken neyin yanlış gittiğini bilmiyorum. Çok teşekkürler. Lütfen bir cevap yazınız ve bunu tekrarlayacağım. – Miki

cevap

4

ContentWriter::putContent için InputStream parametresini kullanabilirsiniz. Bu nedenle, Dize bayt dizisini (ve tersi) dönüşümleri engelleyeceksiniz, bu da kodlamada zorluklara neden olur.

writer.putContent(new ByteArrayInputStream(Base64.decodeBase64("yourBase64EncodedString"))) 
İlgili konular