読者です 読者をやめる 読者になる 読者になる

XML-RPCで添付ファイルを追加する

API仕様はあるんですが、XML-PRCを使ったことがなくてイメージがつかめなかったです。添付ファイルの追加のAPIはこんなかんじです。

Attachment  addAttachment(String token, long contentId,  Attachment  attachment, byte[] attachmentData) 

Groovyでのサンプルコードを載せておきます。attachmentはマップで必須のプロパティのみ設定してます。

import groovy.net.xmlrpc.*; 

// 接続ID/パスワード
username = 'test'
password = 'test'

// ConfluenceのURL
baseUrl = 'http://127.0.0.1/confluence'

c = new XMLRPCServerProxy(baseUrl + "/rpc/xmlrpc")
c.confluence1.login(username, password)  {token -> 
    // ページを取得(スペース:GUIDE, ページタイトル:Home)
    def page = c.confluence1.getPage(token, 'GUIDE', 'Home')
   
    // 添付するファイルをbyte[]に読み込む
    def bout = new ByteArrayOutputStream()
    def fin = new FileInputStream("D:\\test.pdf");    
    bout << fin
  
    // 添付ファイル
    def attachment = [
        pageId: page.id,
        fileName: 'test.pdf',
        contentType: 'application/pdf',
        comment: '添付ファイルのテスト'
    ]
    
    // ファイルをアップロードする
    println c.confluence1.addAttachment(token, page.id, attachment, bout.toByteArray())
    
    fin.close()
    bout.close()
}

事前にXMLRPCライブラリを追加しておく必要があります。
Groovy - XMLRPC