0

我尝试了很多方法来使用 xml-rpc 将图像上传到 wordpress,并通过一系列文件名、路径和文件类型获得完美的响应。不过,如果我在 wordpress 中查看图像,它会生成一个 0 字节损坏的图像文件。

我已经创建了一个类来操作所有查询,例如创建帖子/编辑帖子/删除帖子等。所有工作文件只是 wp.uploadfile 运行良好。

这是我的图片上传功能。

function upload_pic($url, $pic, $type='image/jpg')
{
    $fs = filesize($url);
    $file = fopen($url, 'rb');
    $filedata = fread($file, $fs);
    fclose($file);

    $content = array(
        'name'  => $pic,
        'type'  => $type,
        'bits'  => new IXR_Base64($filedata), 
        'overwrite' => false 
    );

    $params = array(1,$this->UserName,$this->PassWord,$content,true);
    return $this->send_request('wp.uploadFile',$params);
}

我得到以下回应

   Array
   (
       [id] => 190
       [file] => P_1364799102.jpg
       [url] => http://localhost/wordpress/wp-content/uploads/2013/04/P_13647991025.jpg
       [type] => image/jpg
   )

响应看起来不错,但静止图像文件已损坏 0 字节。

请帮我解决一下这个。我也试过'metaWeblog.newMediaObject',但问题还是一样。

4

1 回答 1

0

我找到了一个修复它现在工作正常。

function upload_pic($postid, $myFile, $name, $type='image/jpeg')
{
    $rpcurl = $this->XMLRPCURL;;
    $username = $this->UserName;
    $password = $this->PassWord;

    $file=file_get_contents($myFile);
    $filetype = $type;
    $filename = $name;

    xmlrpc_set_type($file,'base64'); // <-- required!
    $params = array($postid,$username,$password,array('name'=>$filename,'type'=>$filetype,'bits'=>$file,'overwrite'=>false));

    $request = xmlrpc_encode_request('wp.uploadFile',$params);
    $result = xmlrpc_decode($this->go($request,$rpcurl));
    return $result;
}

谢谢

于 2013-04-09T10:53:10.440 回答