У меня довольно сложная ситуация. У меня возникли некоторые вопросы, но теперь я ближе к решению. Ситуация: Java-кодер отправляет мне запрос с изображением. Здесь я получаю его запрос и помещаю его в файл журнала:
$query = fopen("php://input",'rb'); $queryFile= fopen("/var/www/9292/querylog.txt","wb"); stream_copy_to_stream($query, $queryFile); fclose($queryFile); fclose($query);
Данные из журнала являются шестнадцатеричными, поэтому я обрабатываю его следующим образом:
$query=file_get_contents("/var/www/9292/querylog.txt"); $query = preg_replace('/[\s\r\n]+/', '', $query); $queryHex=pack("H*", $query); $inputImage=$queryHex; $inputImage=trim($inputImage);
Я не знаю, нужно ли удалять пробелы, но удаление и добавление не вносят изменений в результат. Затем я создаю Image.
$imageFile=fopen("/var/www/9292/inputPhoto.jpg", 'wb'); fwrite($imageFile, $inputImage); fclose($imageFile);
Итак, проблема: когда Java-кодер отправляет запрос, созданное изображение является полуразмерным и нечитаемым, но когда я помещаю данные из журнала в Advanced Rest Client и использую тот же скрипт, он создает прекрасную фотографию. У меня есть tcpdump о его просьбе. Вот оно и это что-то вроде:
......JFIF.....`.`.....C...... .. ......(.....1#%.(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc...C......./../cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc........p.."......................................6......................!..1.A."Qa2q...B....#4Ccr......................................................A.1............?..j*i.}.+vE..s...d85..5.....K..`..hc..y..=@.3.|N.<...?.......h....Y.$.5....W%....?E..cm0..$.$...I$...s...... Z.P2.3.j9..I..w\..F.......1.c.{.?\~..>.m4.......E......{.).nm"B.|....u..........[.H..>..4.~...k.pl......KO..;z/K..S4./.6i.....OpEc...'.m..0k9Y.r.......en.......>...8.........~.XR..h...f.."...q...../..mmn.<..\NI?2..q...O.2nd!......A=...\7.qZ.YS..,.+q.....
(Я не показываю целую фотографию из-за конфиденциальности =)). Теперь, когда я проверяю скрипт с помощью Advanced Rest Client и помещаю туда изображение в двоичном виде: 1. Переносит данные в двоичный формат журнала. 2. Создает то же изображение, что и запрос Java-кодера.
Поэтому, насколько я понимаю, я должен обрабатывать запрос другим способом. Итак, как я могу справиться с этим, чтобы получить прекрасную картину?