Мне нужно отправить байтовый массив данных (его источник изображения) вместе с кучей других переменных в службу.Если я посылаю байтовый массив, используя что-то вроде следующего
var request:URLRequest = new URLRequest ( 'http://www.mydomain.com/upload.php' );
var loader: URLLoader = new URLLoader();
request.contentType = 'application/octet-stream';
request.method = URLRequestMethod.POST;
request.data = byteArrayOfImage;
loader.load( request );
и в php
$fp = fopen( 'myImage.jpg', 'wb' );
fwrite( $fp, $GLOBALS[ 'HTTP_RAW_POST_DATA' ] );
fclose( $fp );
, тогда это прекрасно сохраняет изображение.Но мне нужно отправить дополнительные переменные вниз, поэтому я пытаюсь использовать следующее.
var service : HTTPService = new HTTPService();
service.method = "POST";
service.contentType = 'application/x-www-form-urlencoded';
service.url = 'http://www.mydomain.com/upload.php';
var variables : URLVariables = new URLVariables();
variables.imageArray = myImageByteArray;
variables.variable2 = "some text string";
variables.variable3 = "some more text";
service.send( variables );
Затем в php
$byteArray= $_REQUEST["imageArray"];
$fp = fopen( 'myImage.jpg', 'wb' );
fwrite( $fp, $byteArray );
fclose( $fp );
Но это не работает.Размеры сохраняемых файлов различаются, и последний не сохраняет его в виде изображения.Чего мне не хватаетЯвляется ли это тем, что рабочий тип контента является application / octet-stream, а тип контента того, который не работает, является application / x-www-form-urlencoded?