开发者社区> 问答> 正文

PHP wordpress xmlrpc 远程上传图片 无效图片 wp.uploadFile 配置

最近我的网站想使用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
)
说明文件已经正常上传了。

但是打开图片是无效的图片

望朋友们一起帮忙解决。

展开
收起
kun坤 2020-05-31 17:30:11 1285 0
1 条回答
写回答
取消 提交回答
  • 、怀疑你是有什么必要的操作没做, 去找别人的 demo

    ######没玩过######

    引用来自“searchjack”的答案

    、怀疑你是有什么必要的操作没做, 去找别人的 demo
    demo 好少哦,找不到 ######你用记事本打开这个图片,看看是什么内容######

    引用来自“leo108”的答案

    你用记事本打开这个图片,看看是什么内容
    是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, 
    2020-05-31 17:30:16
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载