Показать сообщение отдельно
Старый 28.06.2011, 11:55
Rzer вне форума Посмотреть профиль Отправить личное сообщение для Rzer Посетить домашнюю страницу Rzer Найти все сообщения от Rzer
  № 2  
Ответить с цитированием
Rzer
 
Аватар для Rzer

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 613
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
Кусочек кода из класса по публикации картинок
Код AS3:
private static var imageData:ByteArray;
		private static var imageLoader:URLLoader;
		private static var imageMessage:String;
		private static var imageOptions:Object;
 
		public static function postPhoto(bd:BitmapData, func:Function,  message:String =""):void {
 
			var encoder:PNGEncoder = new PNGEncoder();
			imageData = encoder.encode(bd);
			imageData = MultpartData.addFile(imageData, "photo");
			imageMessage = message;
 
			getWallUploadServer(onGetWallUploadServer);
		}
 
		private static function onGetWallUploadServer(answer:XML):void{
			var path:String = answer.upload_url.text();
 
			var request:URLRequest = new URLRequest();
			request.url = path;
			request.requestHeaders.push(new URLRequestHeader("Content-type", "multipart/form-data; boundary=" + MultpartData.BOUNDARY));
			request.method = URLRequestMethod.POST;
			request.data = imageData;
 
			imageLoader = new URLLoader();
			imageLoader.addEventListener(Event.COMPLETE, onUploadComplete);
			imageLoader.load(request);
		}
public static function getWallUploadServer(func:Function):void {
			sendRequest( { method:"photos.getWallUploadServer"}, func );
		}
 
		private static function onUploadComplete(e:Event):void {
 
			imageOptions = JSON.deserialize(imageLoader.data);
			saveWallPhoto(imageOptions.server,imageOptions.photo,imageOptions.hash, onSavePhotoComplete);
		}
 
		static private function onSavePhotoComplete(answer:XML):void{
			var photoId:String = answer.photo.id.text();
 
			VKWrapper.saveWallPost( { attachment:photoId, message:imageMessage }, onPublicResult);
 
		}
 
public static function saveWallPhoto(server:String, photo:String, hash:String, func:Function):void {
			sendRequest( { method:"photos.saveWallPhoto", server:server, photo:photo, hash:hash}, func );
		}
Класс MultipartData:
Код AS3:
package ru.atflash.encrypt {
	import flash.utils.ByteArray;
	/**
	 * ...
	 * @author rzer
	 */
	public class MultpartData{
 
		public static const BOUNDARY:String = "----------cH2gL6ei4Ef1gL6GI3Ij5Ef1Ef1Ef1";
        private static const CRLF:String = "\r\n";
        private static const HYPHENS:String = "--";
 
		public static function addFile(file:ByteArray, name:String = "Filedata", fileName:String = "name.jpg"):ByteArray {
 
			var data:ByteArray = new ByteArray();
            data.writeUTFBytes(HYPHENS + BOUNDARY + CRLF);
            data.writeUTFBytes("Content-Disposition: form-data; name=" + name + "; filename=" + fileName + CRLF);
            data.writeUTFBytes("Content-Type: application/octet-stream" + CRLF + CRLF);
            data.writeBytes(file);
            data.writeUTFBytes(CRLF);
 
			var result:ByteArray = new ByteArray();
            result.writeBytes(data);
            result.writeUTFBytes(HYPHENS + BOUNDARY + HYPHENS);
            return result;
        }
 
	}
 
 
 
}
VKWrapper.saveWallPost метод вызывающий jsApi, или если приложение с контейнером, то с обращением к нему