2009-06-12 9 views
5

もしそうなら、コードを提供することができます。私は新しいページの作成、ページの属性の変更など、ほとんどすべてを行うことができますが、添付ファイルを追加することはできません。私は公式conflunce Perl XML-RPC site and discussionsを読んだが、そこに表示されているすべてのコード断片は私にとってはうまくいかないようだ。ここで私のハッキングされた試みがあります:Confluence.pmに添付ファイルを追加する権限を持っている人はいますか?

# The following command sort of worked: 
# ~/bin/wikitool.pl -action attach_file -url $MYURL 
# IT attached something but the file was empty 
sub attach_file { 
    my $confluence = XMLRPC::Lite->proxy($opts{server}."rpc/xmlrpc"); 
    my $token = $confluence->call("confluence1.login", $opts{login}, $opts{password})->result(); 

    # Fetch page 
    my $page = FetchPage($opts{title}); 
    if (not $page) { 
     dbg("$opts{title} page is missing.","FATAL"); 
    } 

    my $pageId = SOAP::Data->type(string => $$page{id}); 

    my $filename = "$ENV{HOME}/tmp/tmp0.gif"; 
    my $metadata = { 
     fileName => $filename, 
     contentType => "image/gif", 
     comment => "Some random GIF", 
    }; 
    if (not open FILE, "< $filename") { 
     dbg("Could not open file $filename: $!\n","FATAL"); 
    } 
    binmode FILE; 
    my $data; 
    $data .= $_ while (<FILE>); 
    my $call = $confluence->addAttachment($pageId, $metadata, $data); 

    my $fault = $call->fault(); 
    if (defined $fault) { 
     dbg("could not attach $filename" . $call->faultstring(), "FATAL"); 
    } 
    else { 
     print "attached $filename\n"; 
    } 
} 

答えて

5

あなたはその道の95%でした。私のための秘密のソース:

$data .= $_ while (<FILE>); 
my $escaped_data = new RPC::XML::base64($data); 
my $call = $confluence->addAttachment($pageId, $metadata, $escaped_data); 

私はこれが役立つことが、多分他の誰かが、いつかそれにぶつかるだろうあまりにも遅れていると確信しています。

+0

ありがとうございます!私は他のプロジェクトに移りましたが、集団にいくつかの洞察を加えてくれてありがとう... – stephenmm

0

xml-rpcは現在コンフルエンスになっています。現在多くの機能がxml-rpcインターフェイスで動作しません。より多くの石鹸の下で動作します。

関連する問題