Кусочек кода из класса по публикации картинок

Код 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, или если приложение с контейнером, то с обращением к нему