2012-01-15 70 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> '; 
    } 
}