Загрузка файла из флеша может осуществиться лишь по какому - либо событию со стороны пользователя (например по нажатию на кнопку).
Итак:
0. Импортируем нужное (импортируем 1 файл, в аттаче 2 нужных файла)
Код AS3:
import MultipartURLLoader;
1. Что и куда загружаем.
Код AS3:
private var _upload_url:String; //Адрес, полученный для загрузки фотографии
private var _fileData:ByteArray; //Ваше изображение
private var _fileContentType:String; //Например так: _fileContentType = 'image/png';
2. Попытка загрузки без нажатия кнопки.
Код AS3:
private function upload():void {
if (_fileData != null) {
try {
uploadFileData();
}
catch(e:Error) {
btn.visible = true;
}
}
else {
}
}
3. Теперь загрузка только по нажатию кнопки.
Код AS3:
private function onBtn(event:MouseEvent):void {
uploadFileData();
}
4. Непосредственно загрузка изображения, получение "server","photos_list","aid","hash".
Код AS3:
private function uploadFileData():void {
var mll:MultipartURLLoader = new MultipartURLLoader();
mll.addEventListener(Event.COMPLETE, onUploadCompleteThroughAlarm);
mll.addFile(_fileData, "file.jpg", "file1", _fileContentType);
mll.load(_upload_url);
}
private function onUploadCompleteThroughAlarm(event:Event):void {
event.currentTarget.removeEventListener(event.type, arguments.callee);
savePhotos(parseServerAck(event.currentTarget.loader.data as String));
}
private static function parseServerAck(serverAck:String):* {
var result:* = new Object;
for each(var pair:String in serverAck.split(/\s*[{},]\s*/)) {
var tmp:Array = pair.split(/\s*[:"]\s*/);
if ( (tmp[1] == "server")
|| (tmp[1] == "photos_list")
|| (tmp[1] == "aid")
|| (tmp[1] == "hash")) {
result[tmp[1]] = tmp[4];
}
}
return result;
}
private function savePhotos(serverAck:*):void {
var variables:URLVariables = new URLVariables;
for(var key:String in serverAck) {
variables[key] = serverAck[key];
}
savePhotosVk(variables.aid, variables.server, variables.photos_list, variables.hash);
}
5. И, наконец, сохранение переданного изображения (photos.save)
Код AS3:
private function savePhotosVk(this_aid:Number, this_server:String, this_photos_list:String, this_hash:String):void {
...
}
Используемые классы для загрузки