欢迎访问 夜阑小雨 我的学习碎片档案,这里记录了我的学习内容和工作中经验,希望给您带去帮助。

wordpress远程发布上传图片–php

PHP 夜阑小雨 1424℃ 0评论

我的代码:

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' => new IXR_Base64($filetext),
	'overwrite' => false,
);
$params = array(0,$user,$pwd,$data);
$client->query('metaWeblog.newMediaObject', $params);//metaWeblog.newMediaObject 与wp.uploadFile 是同样的效果
$uploadimg = $client->getResponse();
print_r($uploadimg);

这个是再网上看到的一些代码。可以将文章中的远程图片转换为本地。

function wp_irx_uplad_file($body){
 
global $xmlclient,$username,$password;
 
 
 $imgtag = "<img";
 
 
       $srctag = "src";
 
 
       $pattern = '/src=\"(.*?)\"/';
 
 
       $pattern = "/<img.+src=('|\"|)?(.*)(\\1)([\s].*)?>/ismUe";  //图片代码标签的正则表达式,子模式匹配src地址
 
 
       if (strpos($body,$imgtag) && strpos($body,$srctag)) {
 
 
            preg_match_all ($pattern,$body,$matches);
 
 
          for ($i=0; $i< count($matches[0]); $i++) {
 
 
              $src = $matches[2][$i];
 
 
              $imgsrc = $src;
 
 
          $temp = explode( "/", $src );
 
 
          $name = trim( $temp[count( $temp ) - 1] );//名称
 
 
              $filesrc = $src;
 
 
              if(function_exists('mime_content_type')){
 
 
                  $type = mime_content_type($filesrc);//只支持php5.2以下 获取文件类型
 
 
              }else{
 
 
          $finfo = finfo_open(FILEINFO_MIME);
 
 
                  $type = finfo_file($finfo, $filesrc);//获取文件类型
 
 
                  finfo_close($finfo);
 
 
              }
 
 
              if(function_exists('file_get_contents')) {
 
 
                $bits = new IXR_Base64( file_get_contents($filesrc)); //图片内容需要转成base64,             
              }
 
 
              $data = array(
 
 
                  'name'=> $name,
 
 
                  'type'=> $type,
 
 
                  'bits'=> $bits,
 
 
              );
 
 
              $client = new IXR_Client($xmlclient);
 
 
              $fileparams = array(0,$username,$password,$data);
 
 
              if (!$client->query('metaWeblog.newMediaObject', $fileparams)) {
 
 
                  die('Something went wrong – '.$client->getErrorCode().' : '.$client->getErrorMessage());
 
 
                  $returnurl="";
 
 
              } elseif ($client->getResponse()) {
 
 
                  $response = $client->getResponse();
 
 
                  $returnurl = $response['url'];//获取新的图片地址
 
 
              }
 
 
              $body = str_replace($imgsrc,$returnurl,$body);  //替换内容中的图片地址
 
 
          }
 
 
    return $body;
 
 
}
 
<p>//样例
 
define('KC_FILE_COMMAND', '/usr/bin/file -ib "%s"');//用于获取文件类型
 
 
require_once('class-IRX.php');
 
 
$client->debug = true;  //开发测试时设置为true,api完成上线后改为false
 
 
$username = "admin"; //用户名
 
 
$password = 'admin888';//密码
 
 
$wpsite = 'http://softuses.com'; //改成自己的
 
 
$xmlclient = $wpsite."/xmlrpc.php";
 
 
$body="这是一个测试的样例.<img src='http://softuses.com/wp-content/themes/softuses/images/bg.jpg' border=0/>"
 
 
echo "原内容:".$body;
 
 
echo "<hr>";
 
 
echo "新内容:".wp_irx_uplad_file($body);</p>

转载请注明:夜阑小雨 » wordpress远程发布上传图片–php

喜欢 (3)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址