Im загружает изображения во Flash и использует JPGEncoder для кодирования изображения в ByteArray и отправляет его в AMF PHP, который записывает bytearray в файл. Кажется, что все это работает правильно, и я могу загрузить полученный файл в Photoshop CS4 абсолютно нормально. Когда я пытаюсь открыть его с рабочего стола или открыть его обратно в Flash, он не работает ... Picasa мой браузер изображений по умолчанию говорит «Invalid»Flash -> ByteArray -> AMFPHP -> Недопустимое изображение?
Вот код, я использую, чтобы написать ByteArray в файл -
$jpg = $GLOBALS["HTTP_RAW_POST_DATA"];
file_put_contents($filename, $jpg);
Вот и все ... Я использую класс NetConnection для подключения и вызова службы, мне нужно сказать, что я отправляю данные jpg? Я предположил, что JPGEncoder позаботился об этом. Как я могу проверить bytearray перед написанием файла? Нужно ли мне устанавливать тип MIME или что-то в этом роде. Извините несколько вопросов noob, малое знание может быть опасным.
Благодаря
--------------------------------------- ЧАСТЬ II ------------------------------------------
Вот несколько кодов -
1) загрузить изображение в флэш-плеер
item.load();
function _onImageDataLoaded(evt:Event):void {
var tmpFileRef:FileReference=FileReference(evt.target);
image_loader=new Loader ;
image_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, _onImageLoaded);
image_loader.loadBytes(tmpFileRef.data);
}
function _onImageLoaded(evt:Event):void {
bitmap=Bitmap(evt.target.content);
bitmap.smoothing=true;
if (bitmap.width>MAX_WIDTH||bitmap.height>MAX_HEIGHT) {
resizeBitmap(bitmap);
}
uploadResizedImage(bitmap);
}
function resizeBitmap(target:Bitmap):void {
if (target.height>target.width) {
target.width=MAX_WIDTH;
target.scaleY=target.scaleX;
} else if (target.width >= target.height) {
target.height=MAX_HEIGHT;
target.scaleX=target.scaleY;
}
}
function uploadResizedImage(target:Bitmap):void {
var _bmd:BitmapData=new BitmapData(target.width,target.height);
_bmd.draw(target, new Matrix(target.scaleX, 0, 0, target.scaleY));
var encoded_jpg:JPGEncoder=new JPGEncoder(90);
var jpg_binary:ByteArray=encoded_jpg.encode(_bmd);
_uploadService=new NetConnection();
_uploadService.objectEncoding=ObjectEncoding.AMF3
_uploadService.connect("http://.../amfphp/gateway.php");
_uploadService.call("UploadService.receiveByteArray",new Responder(success, error), jpg_binary, currentImageFilename);
}
Большое спасибо вам помочь
Значит, это неверно на сервере AMF? Как вы используете JPGEncoder? Можете ли вы показать код для каждого шага? В каком формате находится изображение? Вы создаете его во flash-качестве BitmapData? Я бы предположил, что это запуталось на ранней стадии, так как ByteArray - это просто байты, и если вы просто напишете их в файл, мало что может пойти не так. – Kekoa
Привет - Ive отредактировал оригинальный вопрос, чтобы включить некоторый код. Спасибо kekoav – undefined