Есть ли способ получить файл изображения через HttpService Flex? - PullRequest
0 голосов
/ 01 июля 2011

Я написал этот фрагмент кода для использования PHP-скрипта для отправки данных на Flex .

Вот код Flex:

<s:HTTPService id="imageService" url="http://localhost/bookView/amfphp/services/ImageServer/showImage.php" 
                   useProxy="false" 
                   method="POST"
                   result="handleImageResult(event)" 
                   fault="handleFault(event)" 
                   showBusyCursor="true">
        <s:request xmlns="">
            <bdla>"lashf"</bdla>
        </s:request>
    </s:HTTPService>

Вот код PHP:

        public function returnRandomImage(){
            $contents = file_get_contents("images/code_complete2.png");
            header('Content-Type: image/png');

            return $contents;
        }

Дело в том, что я действительно заинтересован в использовании PHP для отправки файла изображения, чтобы я мог отрендерить его и использовать его во Flex.Однако, когда я .send() это HttpService, все, что я получаю, это событие сбоя с этим сообщением: (Я пробовал и с функцией header() и без it).

(mx.messaging.messages::AcknowledgeMessage)#0
 body = "PNG"

Вот и все.Надеюсь, кто-то может помочь. Если нет способа использовать HttpService для этой цели (т.е. отправлять файлы изображений), как тогда можно это сделать?Я видел это в приложении, над которым работал, поэтому я уверен, что это можно сделать.

EDIT Добавлен также PHP-код.

Ответы [ 2 ]

2 голосов
/ 01 июля 2011

Вы можете кодировать изображение с помощью Base64, таким образом, вы можете отправить его и получить его в виде текста.

http://www.google.es/search?sourceid=chrome&ie=UTF-8&q=as3+base64+encoder

0 голосов
/ 01 июля 2011

Я предполагаю, что вы пытаетесь отправить изображение с php на flex, когда его запрашивает flexHTTPservice

Вы должны убедиться, что заголовок установлен правильно на стороне php

// this method should be used if you have the image inside a database
    header('Content-type: image/png');
    echo $image;
//if the image is just an image on the server then you just need to point the HTTPService to the url "http://mydomain.com/testimage.jpg"

Если вы отправляете изображение из Flex в PHP, то для достижения наилучших результатов вы должны использовать base64.[РЕДАКТИРОВАТЬ]

// I would use a loader or the Flex Image component to work with images.
var antiCache:Date = new Date( );
_source = val + '&noCache=' +antiCache.getTime();

_loader = new Loader();
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
_loader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler )
_loader.load(new URLRequest(encodeURI(_source)));
addChild( _loader )
...