2012-01-15 69 views
0

我想通过XML RPC将图片批量上传到我的WordPress博客,然后通过img标签将图片发布到wordpress博客。通过wp.uploadFile发布图片XML RPC

但我的wordpress和wp.uploadFile不会返回base64 encodet文件而不是有效的图像。

这是我的php代码。

<?php $q = new IXR_Client('http://myblog.com/xmlrpc.php'); 
$mediaarray = array(
"name" => $image_name, 
"type" => $atrybuty[mime], 
"bits" => base64_encode($file), 
"overwrite" => false, 
); 
if(!$q->query('wp.uploadFile', 1, $uzyt, $has, $mediaarray)){ 

    echo $q->getErrorCode().': '.$q->getErrorMessage(); 
} 

var_dump($q->getResponse()); 

响应是

array(3) { ["file"]=> string(24) "Pein_by_azurewrath87.jpg" 

["url"]=> string(84) "http://myblog.com/wp-content/uploads/2012/01/Pein_by_azurewrath87.jpg" ["type"]=> string(10) "image/jpeg" }

但是图像是base64_encodet。如何通过wp.uploadFile或metaWeblog.newPost方法将图像正确发送给WordPress。

回答

1

您必须使用IXR_Base64(data)将数据转换为实际的数据对象,而不仅仅是包含base64内容的字符串。

<?php $q = new IXR_Client('http://myblog.com/xmlrpc.php'); 
$mediaarray = array(
"name" => $image_name, 
"type" => $atrybuty[mime], 
"bits" => new IXR_Base64($file), 
"overwrite" => false, 
); 
1

我遇到了一模一样的问题,在这里我用它来管理张贴在同步职位accrosss的WordPress的不同实例的片段。

如果要你来测试这个片段中,只需设置$ post_to_sync-> POST_ID与有附件后ID:

/****************************BEGIN ATTACHMENTS****************************/ 
//get attachments from the original content 
$attachments = & get_children(array(
     'post_parent' => $post_to_sync->post_id, //replace here with a post id 
     'post_type' => 'attachment', 
)); 
if ($attachments != array()) { 
    foreach ($attachments as $attachment_id => $attachment) { 
     $params = array(
       0, 
       XMLRPC_USER, 
       XMLRPC_PWD, 
       array(
         'name' => basename(get_attached_file($attachment_id)), //$attachment->post_title, 
         'type' => $attachment->post_mime_type, 
         'bits' => new IXR_Base64 (file_get_contents (get_attached_file($attachment_id))), 
         'post_parent' => $id_int, 
       ) 
     ); 
     $client->query('metaWeblog.newMediaObject',$params) ; 
     echo '<br> <br> '; 
     var_dump($client->getResponse()); 
     echo '<br> <br> ';echo '<br> <br> ';echo '<br> <br> '; 
    } 
}