Я хочу передать изображение в виде байтового массива из php в веб-службу .NET.
Клиент php выглядит следующим образом:
<?php
class Image{
public $ImgIn = array();
}
$file = file_get_contents('chathura.jpg');
$ImgIn = str_split($file);
foreach ($ImgIn as $key=>$val) { $ImgIn[$key] = ord($val); }
$client = new SoapClient('http://localhost:64226/Service1.asmx?wsdl');
$result = $client->PutImage(new Image());
echo $result->PutImageResult;
//print_r($ImgIn);
?>
Вот веб-метод в веб-службе ASP.NET:
[WebMethod]
public string PutImage(byte[] ImgIn)
{
System.IO.MemoryStream ms =
new System.IO.MemoryStream(ImgIn);
System.Drawing.Bitmap b =
(System.Drawing.Bitmap)Image.FromStream(ms);
b.Save("imageTest", System.Drawing.Imaging.ImageFormat.Jpeg);
return "test";
}
Когда я запускаю это, содержимое изображения корректно читается в ImgIm массив в клиенте php. (В этом случае изображение содержит 16992 элемента.) Однако, когда массив передается методу веб-службы, он содержит только 5 элементов (первые 5 элементов изображения)
Могу ли я узнать, в чем причина потери данных? Как я могу избежать этого?
Спасибо