您好,我试图检索通过wsdl作为变量的图像
$wsdl = 'http://mydataconnection.com/IR?wsdl';
ini_set("soap.wsdl_cache_enabled", "0"); // TODO: disable WSDL cache if required
ini_set("default_socket_timeout", 10); // TODO: set appropriate read timeout
$client = new SoapClient($wsdl, array("connection_timeout"=>5));
$days = 7; // Get all products that have changed in the past 7 days
$date = date('d/m/Y 00:00', (time() - ($days * 24 * 60 * 60)));
$productIds = $client->getProductIdsChangedSinceDateStrForType(array("lastRequestDateStr" => $date, "leafOnly" => true))->getProductIdsChangedSinceDateStrForTypeReturn;
foreach ($productIds as $productId) {
$product = $client->getProductUsingIdAndImageFlag(array("productId" => $productId, "incImage" => true))->getProductUsingIdAndImageFlagReturn;
$image = $product->image;
}
这段代码返回$product(一个数组)内的变量数量,包括返回整个图像的$product->image,但我似乎无法将数据保存为清晰的格式。$image data的开头看起来像这样,很长,所以我不会把它全部发布…
‰PNG IHDR88@x=€IDATxÚì½|[×Ùø¯3CÌÌÌÌL2³%ÙZK–%Ë’eŒ23sÐa‡“¦M»•×n+´k»rõïÈ7ñœ4ɶ÷ÝÿóמïçùœœV$û|ï󜫫+Ôù? þ (*¢B PTE…@ PTŠ @ ¨Š @Q!¢B (*¢B PTE…@ PTŠ @ ¨Š @Q!¢B (*¢B PTE…@ PTŠ @ ¨@Q!¢B (*¢B PTE…@ PTŠ @ ¨@Q!¢B (*¢B PTE…@ ¨Š @ ¨@Q!¢B (*¢B PTE…@ ¨Š @ ¨@Q!¢B (*E…@ PTE…@ ¨Š @ ¨@Q!¢B (*E…@ PTE…@ ¨Š @ ¨@Q!(*¢B (*E…@ PTE…@ ¨Šúÿ ?ýË-EýÿÍÒ
我已经尝试使用下面的代码来保存图像,但它不起作用,可能是错误的方法。
base64_decode($image);
$filename = "$imagename.png";
if (!$handle = fopen($filename, 'w')) {
echo "Cannot open file ($filename)";
exit;
}
if (fwrite($handle, $content) === FALSE) {
echo "Cannot write to file ($filename)";
exit;
}
fclose($handle);
echo system("png -d $filename");
任何帮助都将非常感激。
谢谢
我收到了来自soap客户机的响应。在我的例子中,下面的代码可以工作。
$image = $product->image;
$filename = "test.png";
if (!$handle = fopen($filename, 'w')) {
echo "Cannot open file ($filename)";
exit;
}
if (fwrite($handle, $image) === FALSE) {
echo "Cannot write to file ($filename)";
exit;
}
fclose($handle);
只是随机尝试一下,看看会发生什么…
header("Content-type: image/png"); // or whatever
print $image;
将显示图像在屏幕上我还在努力工作如何保存它为文件