metaWeblog.newMediaObject (blogid, username, password, struct)
方法说明:
1.参数:blogid、username、password,blogid代表blog的id,在wordpress里一般是1;username、password分别是WordPress的用户名密码;struct是一种struct结构,必须包含name、type和bits三个元素,其中name就是数据名字,type之mime type,bits为经过base64编码的数据流,类型为string
2.返回值:如果调用成功,返回一个struct,至少包含一个url元素,代表数据的HTTP或者FTP URL

关于参数:
1.参数struct,name不用多说,提供字符串名字即可
2.type可以利用mime_content_type()函数获取(限于PHP5.3以下,这个函数5.3不用了,可以用fileinfo()代替)
3.bits元素,需要将媒体(图片)等打开,利用xmlrpcval类来进行base64 编码操作,不能直接用php的base64_encode()来操作

提供两段代码:

例子1: [php]$filesrc=”../text.jpg”;
$name = “text.jpg”;
$type = mime_content_type($filesrc); //获取文件类型,php.ini需要启用pecl模块
$bits = new xmlrpcval(file_get_contents($filesrc),”base64″);
$data = array(
‘name’ => $name,
‘type’ => $type,
‘bits’ => $bits
);
$x = new xmlrpcmsg(“metaWeblog.newMediaObject”,
array(
php_xmlrpc_encode(“1″),
php_xmlrpc_encode($username),
php_xmlrpc_encode($userpass),
php_xmlrpc_encode($data),
php_xmlrpc_encode(“1″)
)
);
$c->return_type = ‘phpvals’;
$r =$c->send($x);[/php]
例子2:

[php] include("xmlrpc.php");
$GLOBALS[‘xmlrpc_internalencoding’] = ‘UTF-8’;
define (‘DOMAIN’, ‘wp.mypku.net’); // 博客的域名
define (‘BLOGID’, 1); // 博客ID,一般为1
define (‘USER’, ‘admin’); // 博客登录的用户名
define (‘PASSWORD’, ‘123456’); // 博客登录的密码

$cl = new xmlrpc_client ( "./xmlrpc.php", DOMAIN, 80);
// 准备请求
$req = new xmlrpcmsg(‘metaWeblog.newMediaObject’);
// 逐个列出请求的参数:
$req->addParam ( new xmlrpcval ( BLOGID, ‘int’)); // 博客ID
$req->addParam ( new xmlrpcval ( USER, ‘string’ )); // 用户名
$req->addParam ( new xmlrpcval ( PASSWORD, ‘string’ )); // 密码
$type = mime_content_type(‘E8400.png’);
$filesrc =’./E8400.png’;//文件路径
$filename = ‘E8400.png’;//文件名
$bits = file_get_contents($filesrc);
$struct = new xmlrpcval (
array (
"name" => new xmlrpcval ( $filename, ‘string’ ), // 名字
"type" => new xmlrpcval ( $type, ‘string’), // MIME类型
"bits" => new xmlrpcval ( $bits, ‘base64’), // 利用xmlrpcval类自带base64加密的数据流
), "struct"
);
$req->addParam ( $struct );
$req->addParam ( new xmlrpcval (1, ‘int’)); // 立即发布

// 发送请求
$ans = $cl->send($req);
[/php]