2013-04-02 40 views
0

我已經嘗試了許多方法,使用xml-rpc將圖像上傳到wordpress,並獲得完美的響應與文件名,路徑和文件類型的數組。不過,如果我在wordpress中查看圖像,它會產生一個0字節的損壞圖像文件。XML-RPC wp.upload工作正常但是造成圖像損壞

我已經做了一個類來操作所有查詢,如創建帖子/編輯帖子/刪除帖子等所有工作文件只是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',但問題仍然存在。

回答

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; 
} 

感謝