2009-06-12 7 views
5

Si es así, puede proporcionar el código. Puedo hacer casi todo lo demás desde la creación de páginas nuevas, modificación de atributos de página, etc. Pero parece que no puedo agregar archivos adjuntos. He leído el conflunce Perl XML-RPC site and discussions oficial pero todos los fragmentos de código que muestran no parecen funcionar para mí. Aquí está mi intento pirateado:¿Alguien ha podido obtener Confluence.pm para agregar archivos adjuntos?

# 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"; 
    } 
} 

Respuesta

5

Estuviste el 95% del camino hasta allí. El ingrediente secreto para mí:

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

Estoy seguro que esto es demasiado tarde para ser útil, pero tal vez alguien más va a tropezar con algún día.

+0

Gracias! Pasé a otros proyectos, pero gracias por agregar algunas ideas al colectivo ... – stephenmm

0

xml-rpc está obsoleto ahora en confluencia. mucha función actualmente no funciona en la interfaz xml-rpc. más obras bajo jabón.

Cuestiones relacionadas