Тема: [Вконтакте] Загрузка фоток в Вконтакт
Показать сообщение отдельно
Старый 07.12.2009, 12:59
xpymbl4 вне форума Посмотреть профиль Отправить личное сообщение для xpymbl4 Найти все сообщения от xpymbl4
  № 4  
Ответить с цитированием
xpymbl4
 
Аватар для xpymbl4

Регистрация: Jul 2008
Адрес: Smolensk
Сообщений: 124
Отправить сообщение для xpymbl4 с помощью ICQ Отправить сообщение для xpymbl4 с помощью Skype™
Загрузка файла из флеша может осуществиться лишь по какому - либо событию со стороны пользователя (например по нажатию на кнопку).
Итак:
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 {
...
}
Используемые классы для загрузки
Вложения
Тип файла: rar MultipartURL.rar (4.3 Кб, 705 просмотров)
__________________
круглое тащим, квадратное катим


Последний раз редактировалось xpymbl4; 07.12.2009 в 13:14.