2016-12-15 194 views
0

我正在爲匯合導入頁面(標題,正文)和文件資產(pdf和圖像)創建一個插件。Confluence插件導入外部附件

我使用PageManager來保存頁面和保存/創建一個頁面是非常直接的,但添加附件我發現dificult理解如何做到這一點,因爲幾乎沒有信息在線,我可以找到如何去做吧。

有誰知道如何設置一個頁面對象的附件形成一個inputStream或byte[]page.setAttachments()需要附件對象的列表,但是如果我嘗試創建附件對象,它不接受inputStream或字節數組。

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()); 

任何幫助,將不勝感激

感謝


編輯:

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

您使用的是什麼版本的API? – rmlan

+0

Confluence 5.10.4 – Alex

+0

哈哈,那麼,他們的[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-)正在說謊。 – rmlan

回答

0

使用FileUploadManager將數據上傳並添加附件(它看起來像你實際上使用Groovy,所以我也會):

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

我會嘗試我們的權利吧! – Alex

+0

和是的你是正確的我正在使用groovy :)(好點你是definetly老將) – Alex

+0

我得到follwing錯誤: – Alex