最近我的网站想使用wordpress xmlrpc 远程上传图片,看了好多wordpress xmlrpc 的API说明,也按照接口发送请求,但是图片最后保存下来是无效的图片
有没有朋友可以帮忙解决下!
我的代码:
require_once 'class-IXR.php';
$client = new IXR_Client("http://localhost/xmlrpc.php");
//上传图片
$filetext = @file_get_contents('http://misc.360buyimg.com/lib/img/e/logo-201305.png');
$data = array(
'name' => '3a5ca0ce9c1824876e531d1e05992232.jpg',
'type' => 'image/png',
'bits' => base64_encode($filetext),
'overwrite' => false,
);
$params = array(0,$user,$pwd,$data);
$client->query('metaWeblog.newMediaObject', $params);//metaWeblog.newMediaObject 与wp.uploadFile 是同样的效果
$uploadimg = $client->getResponse();
print_r($uploadimg);
输出的结果是
Array
(
[id] => 1448
[file] => 3a5ca0ce9c1824876e531d1e05992232.jpg
[url] => http://localhost/wp-content/uploads/2013/09/3a5ca0ce9c1824876e531d1e05992232.jpg
[type] => image/png
) 说明文件已经正常上传了。
但是打开图片是无效的图片
望朋友们一起帮忙解决。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
、怀疑你是有什么必要的操作没做, 去找别人的 demo
######没玩过######
、怀疑你是有什么必要的操作没做, 去找别人的 demo
是base64加密码,API说这个值是需要base64加密。
我把base64加密去掉后,保存后的文件大小是0K。
看了下源码,class-wp-xmlrpc-server.php 中 mw_newMediaObject函数.
官网API上说是要base64加密,但是接受的函数里没有解密。改了之后就能上传了。
function mw_newMediaObject($args) {
global $wpdb;
$blog_ID = (int) $args[0];
$username = $wpdb->escape($args[1]);
$password = $wpdb->escape($args[2]);
$data = $args[3];
$name = sanitize_file_name( $data['name'] );
$type = $data['type'];
$bits = base64_decode($data['bits']); 或许我版本低了?3.5.2啊。在查查去。
######
图片编码问题,换成下面的:
$bits = new IXR_Base64( file_get_contents($filesrc)); //图片内容需要转成base64,