Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 恢复Adserver XML_RPC发送图像内容_Php_Image_Xml Rpc - Fatal编程技术网

Php 恢复Adserver XML_RPC发送图像内容

Php 恢复Adserver XML_RPC发送图像内容,php,image,xml-rpc,Php,Image,Xml Rpc,我正在尝试通过xml_rpc发送照片,如下所示: $data = array( 'phpads55deb65dd5ca45.43027895', 'aImage' => array( 'filename' => $file['aImage']['name'], 'content' => file_get_contents($file['aImage']['tmp_name']), ), 'campaignId' =

我正在尝试通过xml_rpc发送照片,如下所示:

$data = array(
    'phpads55deb65dd5ca45.43027895',
    'aImage' => array(
        'filename' => $file['aImage']['name'],
        'content' => file_get_contents($file['aImage']['tmp_name']),
    ),
    'campaignId' => 1,
    'storageType' => 'web'
);

$this->client = new Client('http://example.com/api/v2/xmlrpc/');
$this->client->call('ox.addBanner',  $data);
$filename = $file['aImage']['tmp_name'];
$data = file_get_contents($filename);
$base64 = base64_encode($fileData);

$data = array(
    'phpads55deb65dd5ca45.43027895',
    'aImage' => array(
        'filename' => $filename,
        'content' => $base64
    ),
    'campaignId' => 1,
    'storageType' => 'web'
);
我通过Fiddler收到请求,显示如下:

POST http://example.com/api/v2/xmlrpc/ HTTP/1.1
Host: example.com
Connection: close
Accept-Encoding: gzip, deflate
Content-Type: text/xml; charset=utf-8
Content-Length: 771
Accept: text/xml
User-Agent: Zend_XmlRpc_Client

奥克斯·阿德班纳
phpads55deb65dd5ca45.43027895
活动编号1
横幅名称
Khgjhj
目标
文件名
logo.png
内容
�巴布亚新几内亚
;
评论
DFGDFGDFG
存储类型
网状物
正如您所看到的,请求中没有完整的图像。有什么问题?我测试了
fread
而不是
file\u get\u content
,但没有区别。XML解析器发送此错误:

XML错误:第2行的字符无效


不能在XML响应中嵌入这样的二进制内容。您应该考虑将二进制图像编码为基64字符串的基64。您可以这样做:

$data = array(
    'phpads55deb65dd5ca45.43027895',
    'aImage' => array(
        'filename' => $file['aImage']['name'],
        'content' => file_get_contents($file['aImage']['tmp_name']),
    ),
    'campaignId' => 1,
    'storageType' => 'web'
);

$this->client = new Client('http://example.com/api/v2/xmlrpc/');
$this->client->call('ox.addBanner',  $data);
$filename = $file['aImage']['tmp_name'];
$data = file_get_contents($filename);
$base64 = base64_encode($fileData);

$data = array(
    'phpads55deb65dd5ca45.43027895',
    'aImage' => array(
        'filename' => $filename,
        'content' => $base64
    ),
    'campaignId' => 1,
    'storageType' => 'web'
);

值格式不正确。我不得不改变这条线路

'content' => file_get_contents($file['aImage']['tmp_name']),

哪个需要导入这个

use Zend\XmlRpc\Value\Base64;

我也测试过这个。没用!问题是远程服务器不使用base64。关于嵌入二进制内容,您完全正确。@Abadis您的意思是不能对字符串进行编码?或者为什么不起作用?有base64功能。所以它似乎应该支持base 64编码?@Abadis编码时?也许你的文件不是正确的图像?@Abadis他们说这不是一个bug,但你需要添加base64格式的数据。答案不完全一样吗?