我想通过XML RPC将图像大量上传到我的wordpress博客,然后通过img标签将图像放入wordpress帖子。
但我的wordpress和wp.uploadFile不返回base64编码文件而不是有效图像。
这是我的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。
答案 0 :(得分:1)
您必须使用IXR_Base64(数据)将数据转换为实际数据对象,而不仅仅是具有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 :(得分:1)
我遇到了完全相同的问题,这里是我用来管理帖子附件的片段,同时发布了不同的wordpress实例。
如果您希望测试此代码段,只需使用包含附件的帖子ID设置$ post_to_sync-&gt; post_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> ';
}
}