2016-12-15 7 views
0

Ich erstelle ein Plugin für die Konfluenz, um Seiten (Titel, Körper) und Datei-Assets (PDF und Bilder) zu importieren.Confluence-Plugin externe Anhänge importieren

Ich benutze PageManager, um die Seite zu speichern und speichern/erstellen einer Seite ist ziemlich geradlinig, aber eine Anlage hinzufügen Ich finde schwierig zu verstehen, wie es zu tun ist, da es fast keine Informationen online, die ich finden kann, wie es zu tun.

Kann jemand einen Anhang zu einem Page-Objekt aus einem InputStream oder einem byte[] erstellen? Die page.setAttachments() nimmt eine Liste von Attachment-Objekt, aber wenn ich versuche, ein Anhangsobjekt zu erstellen, nimmt es weder einen inputStream noch ein Byte-Array.

PageManager pageManager = ComponentLocator.getComponent(PageManager) as PageManager 
Page page = pageManager.getPage(8290525l) 
URL url = new URL("https://i.ytimg.com/vi/tntOCGkgt98/maxresdefault.jpg"); 
InputStream bufferIn = new BufferedInputStream(url.openStream()); 

Jede Hilfe

Dank geschätzt würde


Edit:

PageManager pageManager = ComponentLocator.getComponent(PageManager) as PageManager 
ArrayList<AttachmentResource> attachResources = new ArrayList<AttachmentResource>() 

def page = pageManager.getPage(8290525l) 
URL url = new URL("https://i.ytimg.com/vi/tntOCGkgt98/maxresdefault.jpg"); 
InputStream bufferIn = new BufferedInputStream(url.openStream()); 

DefaultSaveContext context = new DefaultSaveContext() 
context.setUpdateLastModifier(true) 


AttachmentManager attachmentManager = ComponentLocator.getComponent(AttachmentManager) as AttachmentManager 
Attachment attachment = new Attachment("2454.png", "image/png", bufferIn.getBytes().length, "", false) 
attachmentManager.saveAttachment(attachment, null, bufferIn) 

page.addAttachment(attachment) 
pageManager.saveContentEntity(page, context) 
+0

Welche Version der API verwenden Sie? – rmlan

+0

Confluence 5.10.4 – Alex

+0

Haha, na dann, ihre [Api Docs] (https://docs.atlassian.com/confluence/5.10.4/com/atlassian/confluence/pages/AttachmentManager.html#saveAttachment-com.atlassian .confluence.pages.Attachment-com.atlassian.confluence.pages.Attachment-java.io.InputStream-) lügen. – rmlan

Antwort

0

Verwenden FileUploadManager die Daten zu laden und die Anlage hinzufügen (es sieht aus wie Sie sind tatsächlich mit Groovy, also werde ich auch):

PageManager pageManager = ComponentLocator.getComponent(PageManager) as PageManager 
Page page = pageManager.getPage(8290525l) 

URL url = new URL("https://i.ytimg.com/vi/tntOCGkgt98/maxresdefault.jpg"); 
InputStream bufferIn = new BufferedInputStream(url.openStream()); 

FileUploadManager uploadManager = ComponentLocator.getComponent(FileUploadManager) as FileUploadManager 
AttachmentResource attachment = new InputStreamAttachmentResource (bufferIn, "2454.png", "image/png", bufferIn.getBytes().length) 
uploadManager.storeResource(attachment, page) 
+0

Ich werde das jetzt versuchen! – Alex

+0

und ja Sie sind richtig Ich benutze groovy :) (gute Stelle, du bist definitiv ein Veteran) – Alex

+0

Ich bekomme den folgenden Fehler: – Alex

Verwandte Themen