|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jul 2005
Сообщений: 57
|
Отправка содержимого картинки и сохранение на сервере
Всем добрый день. Столкнулся с такой проблемой. Нужно считать содержимое файла картинки, отправить на сервер и там сохранить в файл. делаю так:
import mx.graphics.ImageSnapshot; import mx.graphics.codec.JPEGEncoder; private var imageSnapshot:ImageSnapshot private function inLargeImage():void { var jPEGEncoder:JPEGEncoder = new JPEGEncoder(90); imageSnapshot = ImageSnapshot.captureImage(load_img,500, jPEGEncoder,true); byteArrayToBitmapData(imageSnapshot.data); } private var loader : Loader = new Loader(); private function byteArrayToBitmapData(byteArray : ByteArray):void { loader.contentLoaderInfo.addEventListener(Event.COMPLETE, getBitmapData); loader.loadBytes(byteArray); } private var bitmapData:BitmapData private function getBitmapData(e:Event):void { var content:* = loader.content; bitmapData = new BitmapData(content.width,content.height,true,0x00000000); var matrix:Matrix = new Matrix(); bitmapData.draw(content, matrix,null,null,null,true); targetImage.source = new Bitmap( bitmapData ); } private function saveInLargeImage() : void { if(bitmapData == null) { return; } var encoder:JPEGEncoder = new JPEGEncoder(90); var byteArray:ByteArray = encoder.encode(bitmapData); var fr : FileReference= new FileReference(); base64Eec = new Base64Encoder(); base64Eec.encode(String(byteArray)); var encodedCredentials:String = base64Eec.toString(); var loader:URLLoader = new URLLoader(); var request:URLRequest=new URLRequest('http://******/wrt.php?rnd=' + Math.random()); request.method=URLRequestMethod.POST; var vars:URLVariables = new URLVariables(); vars['test']=encodedCredentials; request.data=vars; loader.addEventListener(Event.COMPLETE, onComplete); loader.load(request); function onComplete(event:Event):void { trace (loader.data); } } и на стороне сервера:
Кто знает, подскажите: что делаю не так? Почему файл не передается полный объемом?... Заранее спасибо! |
|
|||||
Регистрация: Nov 2010
Сообщений: 497
|
Цитата:
Цитата:
? Бинарные данные в строку вооще-то неоднозначно преобразуются. После вашего ответа на предыдущий вопрос выполните и прокомментируйте следующий пример: const ba:ByteArray = new ByteArray(); for (var i:int = 0; i < 65536; i++) ba.writeShort(i); trace(ba.length); ba.position = 0; const cs:String = String(ba); trace(cs.length); var ptr:int = 0; for (i = 0; i < 65536; i++) { if ((cs.charCodeAt(ptr) << 8 | cs.charCodeAt(ptr + 1)) != i) trace(i + " " + cs.charCodeAt(ptr) + " " + cs.charCodeAt(ptr + 1)); ptr += 2; } |
|
|||||
base64Eec.encode и т. п. ничего этого не нужно. Отправляете ByteArray, а в PHP:
__________________
In Code We Trust |
|
|||||
Регистрация: Jul 2005
Сообщений: 57
|
Спасибо за ответ! Но что то при выводе print_r ($GLOBALS) выдает:
и все... в файл ничего не записывается... |
|
|||||
Регистрация: Jul 2007
Сообщений: 393
|
Ну так как же вам бинарные данные выведутся в виде текста?
И преобразование вам нужно делать не binary->string->base64 а просто binary->base64 Примеры реализации есть и для пхп, и для ас3 |
|
|||||
Регистрация: Jul 2005
Сообщений: 57
|
То есть во флеше binary->base64 отправил и на пхп base64->binary?
|
|
|||||
Регистрация: Jul 2007
Сообщений: 393
|
именно
|
|
|||||
Регистрация: Jul 2005
Сообщений: 57
|
Крайне признателен за наставление на истинный путь ) Все заработало! Всем спасибо!
|
|
|||||
Регистрация: Jul 2007
Сообщений: 393
|
Ну и на base64 свет клином не сошелся, если что.
|
|
|||||
Регистрация: Aug 2008
Сообщений: 27
|
Вы делаете совершенно ненужное преобразование, удваивающее трафик. В сети полно примеров как передавать в PHP через POST бинарные данные.
|
Часовой пояс GMT +4, время: 17:09. |
|
« Предыдущая тема | Следующая тема » |
|
|