- import flash.net.FileReferenceList;
- import flash.net.FileReference;
- import flash.events.*;
- var currentFile = 0;
- var percents = 0;
- var LIST_COMPLETE:String = "listComplete";
- var FileLoader:FileReferenceList = new FileReferenceList();
- var pendingFiles = new Array();
- var uploadURL = new URLRequest();
- uploadURL.url = "http://localhost/upl_photos/uploader.php";
- var pr_bar_width = progress_bar.width / 100;
- progress_bar.width = 0;
- pr_percents.text = '';
- upd_files.addEventListener(MouseEvent.CLICK, clickHandler);
- FileLoader.addEventListener(Event.SELECT, selectHandler);
- addEventListener(LIST_COMPLETE, listCompleteHandler);
- function clickHandler(event:MouseEvent):void
- {
- FileLoader.browse( [ new FileFilter("Изображения(*.jpg;*.jpeg;*.gif;*.png)", "*.jpg;*.jpeg;*.gif;*.png") ]);
- }
- function addPendingFile(file:FileReference):void
- {
- trace("addPendingFile: name=" + file.name);
- pendingFiles.push(file);
- file.addEventListener(Event.OPEN, openHandler);
- file.addEventListener(Event.COMPLETE, completeHandler);
- file.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
- file.addEventListener(ProgressEvent.PROGRESS, progressHandler);
- file.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
- file.upload(uploadURL,'file');
- trace('sent');
- }
- function selectHandler(event:Event):void
- {
- var file:FileReference;
- for (var i:uint = 0; i < FileLoader.fileList.length; i++)
- {
- file = FileReference(FileLoader.fileList[i]);
- addPendingFile(file);
- }
- }
- function cancelHandler(event:Event):void
- {
- var file:FileReference = FileReference(event.target);
- trace("cancelHandler: name=" + file.name);
- }
- function openHandler(event:Event):void
- {
- var file:FileReference = FileReference(event.target);
- trace("openHandler: name=" + file.name);
- }
- function progressHandler(event:ProgressEvent):void
- {
- var file:FileReference = FileReference(event.target);
- file_pending.text = 'Загружается файл ' + currentFile + ' из ' + FileLoader.fileList.length;
- trace('Загружается файл '+currentFile+' из '+FileLoader.fileList.length);
- percents = Math.round((event.bytesLoaded/event.bytesTotal)*100);
- progress_bar.width = percents * pr_bar_width;
- pr_percents.text = percents + '%';
- trace("progressHandler: name=" + file.name + " bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal + ' ' + percents+'%');
- }
- function completeHandler(event:Event):void
- {
- var file:FileReference = FileReference(event.target);
- trace("completeHandler: name=" + file.name);
- removePendingFile(file);
- }
- function httpErrorHandler(event:Event):void
- {
- var file:FileReference = FileReference(event.target);
- info_text.text = "httpErrorHandler: name=" + file.name;
- }
- function ioErrorHandler(event:Event):void
- {
- var file:FileReference = FileReference(event.target);
- info_text.text = "ioErrorHandler: name=" + file.name;
- }
- function securityErrorHandler(event:Event):void
- {
- var file:FileReference = FileReference(event.target);
- info_text.text = "securityErrorHandler: name=" + file.name + " event=" + event.toString();
- }
- function removePendingFile(file:FileReference):void
- {
- for (var i:uint; i < pendingFiles.length; i++)
- {
- if (pendingFiles[i].name == file.name)
- {
- pendingFiles.splice(i, 1);
- if (pendingFiles.length == 0)
- {
- doOnComplete();
- }
- return;
- }
- }
- }
- function doOnComplete():void
- {
- var event:Event = new Event(LIST_COMPLETE);
- dispatchEvent(event);
- }
- function listCompleteHandler(event:Event):void
- {
- info_text.text = 'Файлы успешно загружены!';
- }