Показать сообщение отдельно
Старый 29.04.2011, 15:09
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 2  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Другой способ есть, и он вполне логичен: изображение кодируется флэшом в png или jpg, и отправляется на сервер как файл. Для кодирования используются классы PNGEncoder и JPGEncoder, которые входят в состав as3corelib.

Отправка осуществляется при помощи собранного вручную POST-запроса. Сервер, соответственно, должен обработать его как закачку файла.
Код AS3:
private function sendPNG(bmpData: BitmapData):void {	//http://www.actionscript.org/forums/showpost.php3?p=636159&postcount=4
 
	var imageBytes:ByteArray = PNGEncoder.encode(bmpData);
	imageBytes.position = 0;
 
	var boundary: String = '---------------------------7d76d1b56035e';
	var header1: String  = '--'+boundary + '\r\n'
							+'Content-Disposition: form-data; name="Filename"\r\n\r\n'
							+'picture.png\r\n'
							+'--'+boundary + '\r\n'
							+'Content-Disposition: form-data; name="Filedata"; filename="picture.png"\r\n'
							+'Content-Type: application/octet-stream\r\n\r\n'
	//In a normal POST header, you'd find the image data here
	var header2: String =	'--'+boundary + '\r\n'
							+'Content-Disposition: form-data; name="Upload"\r\n\r\n'
							+'Submit Query\r\n'
							+'--'+boundary + '--';
 
	//Encoding the two string parts of the header
	var headerBytes1: ByteArray = new ByteArray();
	headerBytes1.writeMultiByte(header1, "ascii");
 
	var headerBytes2: ByteArray = new ByteArray();
	headerBytes2.writeMultiByte(header2, "ascii");
 
	//Creating one final ByteArray
	var sendBytes: ByteArray = new ByteArray();
	sendBytes.writeBytes(headerBytes1, 0, headerBytes1.length);
	sendBytes.writeBytes(imageBytes, 0, imageBytes.length);
	sendBytes.writeBytes(headerBytes2, 0, headerBytes2.length);
 
	var request: URLRequest = new URLRequest(Config.UPLOAD_URL);
	request.data = sendBytes;
	request.method = URLRequestMethod.POST;
	request.contentType = "multipart/form-data; boundary=" + boundary;
 
	var loader:URLLoader = new URLLoader();
 
	loader.addEventListener(Event.COMPLETE, this.completeHandler);
	loader.addEventListener(IOErrorEvent.IO_ERROR, this.errorHandler);
	loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.errorHandler);
 
	loader.load(request);
 
}//sendPNG
__________________
тонкий тролль, осеянный благодатью