|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jul 2013
Сообщений: 21
|
Не открывается PNG отправленный на сервер.
Почему когда я BitmapData загоняю в PNGEncoder а затем отправляю на сервер и сохраняю в файл, я этот файл не могу открыть так как он поврежден или слишком велик.
Вот код отправки из флеша: var data_bmp:BitmapData = new BitmapData(container.width,container.height); data_bmp.draw(container); names.text = "Begin Encode"; var png_image_data:ByteArray = PNGEncoder.encode(data_bmp); var ld:URLLoader = new URLLoader(); var url_req:URLRequest = new URLRequest(host); url_req.method = URLRequestMethod.POST; var variables:URLVariables = new URLVariables(); var base64EncodedImg:String = Base64.encode(String(png_image_data)); variables.file = base64EncodedImg; url_req.data = variables; ld.load(url_req);
Png файл я открывал блокнотом структура вроде нормальная . Да и еще один момент почему длина переменной png_image_data до кодировки base64 равна 136614, а после раскадировки на сервере равна 194367 wtf? откуда лишние байты? Последний раз редактировалось scnippers; 06.11.2013 в 21:17. |
|
|||||
Регистрация: May 2001
Адрес: Москва
Сообщений: 670
|
зачем Base64? да и URLVariables
|
|
|||||
Для сохранения картинки на сервере, я пользуюсь этим:
package as3lib.net { import flash.display.DisplayObject; import flash.display.Sprite; import flash.display.BitmapData; import flash.utils.ByteArray; import as3lib.images.JPGEncoder; import flash.net.NetConnection; import flash.events.NetStatusEvent; import flash.net.Responder; import flash.events.EventDispatcher; import flash.events.Event; public class SavingImage extends EventDispatcher { private var _netConnection: NetConnection; private var _encoder: JPGEncoder; /** * Конструктор * @param image Изображение * @param gateWayURL Путь */ public function SavingImage(image: DisplayObject, gateWayURL: String) { var bmd:BitmapData = new BitmapData(image.width, image.height); bmd.draw(image); _encoder = new JPGEncoder(100); var ba:ByteArray; ba = _encoder.encode(bmd); ba.compress(); _netConnection = new NetConnection(); _netConnection.connect(gateWayURL); _netConnection.addEventListener(NetStatusEvent.NET_STATUS, statusEvent); _netConnection.call('SaveImage/saveImage', new Responder( handleResult, handleError ), ba); } /** * Функция обрабатывает результат, возвращенный от сервера после сохранения изображения * @param data */ private function handleResult(data:Object):void { trace(data.status); if (data.status == 'save_succeed') dispatchEvent(new Event(Event.COMPLETE)); } private function handleError():void { trace('error'); } private function statusEvent(e:NetStatusEvent):void { trace(e.info.details); } } }
|
|
|||||
Регистрация: Jul 2013
Сообщений: 21
|
Проблема решена использовать переменные для передачи файла как то тупо. HTTP_RAW_POST_DATA с помощью этого все заработало.
|
Часовой пояс GMT +4, время: 23:57. |
|
« Предыдущая тема | Следующая тема » |
|
|