Guest User

Untitled

a guest
Oct 28th, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package
  2. {
  3.     import flash.errors.IOError;
  4.     import flash.events.Event;
  5.     import flash.events.EventDispatcher;
  6.     import flash.events.IOErrorEvent;
  7.     import flash.events.ProgressEvent;
  8.     import flash.events.SecurityErrorEvent;
  9.     import flash.net.FileReferenceList;
  10.     import flash.net.FileReference;
  11.     import flash.net.FileFilter;
  12.     import flash.net.URLLoader;
  13.     import flash.net.URLRequest;
  14.     import flash.net.URLLoaderDataFormat;
  15.     import flash.net.URLVariables;
  16.     import flash.net.URLRequestMethod;
  17.     import flash.utils.ByteArray;
  18.     /**
  19.      * ...
  20.      * @author sfxworks
  21.      */
  22.     public class FileHandler extends EventDispatcher
  23.     {
  24.         private var files:Vector.<FileReference> = new Vector.<FileReference>();
  25.         private var frlist:FileReferenceList = new FileReferenceList();
  26.         private var _returnVars:Vector.<URLVariables> = new Vector.<URLVariables>();
  27.         private var sizeLimit:int;
  28.        
  29.         private var _numberOfFiles:int = new int(0);
  30.         private var _numberOfCurrentFile:int = new int(0);
  31.         private var _numberOfFilesProcessed:int = new int(0);
  32.        
  33.         private var l:URLLoader;
  34.         private var rq:URLRequest;
  35.         private var vars:URLVariables;
  36.        
  37.         public function FileHandler()
  38.         {
  39.            
  40.         }
  41.        
  42.         public function browse(fileFilter:Array = null, fileSizeLimit = null):void
  43.         {
  44.             sizeLimit = new int(fileSizeLimit);
  45.             frlist.addEventListener(Event.SELECT, selectHandler); //Handle when selected.
  46.             switch(fileFilter)
  47.             {
  48.                 case null:
  49.                     frlist.browse();
  50.                     break;
  51.                 case !null:
  52.                     frlist.browse(fileFilter);
  53.                     break;
  54.             }
  55.         }
  56.        
  57.         public function uploadAll(url:String, location:String = null, auth:String):void
  58.         {
  59.             _numberOfCurrentFile = 0;
  60.             for (_numberOfCurrentFile; _numberOfCurrentFile < _numberOfFiles; _numberOfCurrentFile++)
  61.             {
  62.                 rq = new URLRequest();
  63.                 rq.url = url + "?name=" + files[_numberOfCurrentFile].name.toString() + "&auth="+auth + "&location=" + location;
  64.                 rq.data = files[_numberOfCurrentFile].data;
  65.                 rq.useCache = false;
  66.                 rq.method = URLRequestMethod.POST;
  67.                 rq.contentType = "application/octet-stream";
  68.                
  69.                 l = new URLLoader();
  70.                 l.addEventListener(Event.COMPLETE, fileUploadHandler);
  71.                 l.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
  72.                 l.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
  73.                 l.load(rq);
  74.             }
  75.         }
  76.        
  77.         private function ioErrorHandler(e:IOErrorEvent):void
  78.         {
  79.             trace("IO ERROR." + e.target);
  80.         }
  81.        
  82.         private function securityErrorHandler(e:SecurityErrorEvent):void
  83.         {
  84.             trace("SECURITY ERROR." + e.target);
  85.         }
  86.        
  87.         private function fileUploadHandler(e:Event):void
  88.         {
  89.             _numberOfFilesProcessed++;
  90.             vars = new URLVariables(e.target.data);
  91.             _returnVars.push(vars);
  92.             dispatchEvent(new Event(ProgressEvent.PROGRESS));
  93.            
  94.             if (_numberOfFiles == _numberOfFilesProcessed)
  95.             {
  96.                 dispatchEvent(new Event(Event.COMPLETE));
  97.             }
  98.         }
  99.        
  100.         private function selectHandler(e:Event):void
  101.         {
  102.             frlist.removeEventListener(Event.SELECT, selectHandler);
  103.             _numberOfFiles = _numberOfFiles + frlist.fileList.length;
  104.            
  105.             _numberOfCurrentFile = 0;
  106.             for (_numberOfCurrentFile; _numberOfCurrentFile < frlist.fileList.length; _numberOfCurrentFile++)
  107.             {
  108.                 var f:FileReference = new FileReference();
  109.                 f = e.target.fileList[_numberOfCurrentFile];
  110.                 f.addEventListener(Event.COMPLETE, fileLoadCompleteHandler);
  111.                 f.load();
  112.             }
  113.         }
  114.        
  115.         private function fileLoadCompleteHandler(e:Event):void
  116.         {
  117.             files.push(e.target);
  118.             _numberOfFilesProcessed++;
  119.             dispatchEvent(new Event(ProgressEvent.PROGRESS));
  120.             if (_numberOfFiles == _numberOfFilesProcessed)
  121.             {
  122.                 _numberOfFilesProcessed = 0;
  123.                 dispatchEvent(new Event(Event.COMPLETE));
  124.             }
  125.         }
  126.        
  127.         public function resetSelf():void
  128.         {
  129.             files = new Vector.<FileReference>();
  130.             frlist = new FileReferenceList();
  131.             _returnVars = new Vector.<Array>();
  132.            
  133.             _numberOfFiles = new int(0);
  134.             _numberOfCurrentFile = new int(0);
  135.             _numberOfFilesProcessed = new int(0);
  136.            
  137.             l = new URLLoader();
  138.             rq = new URLRequest();
  139.             vars = new URLVariables();
  140.         }
  141.        
  142.         public function get returnVars():Vector.<URLVariables>
  143.         {
  144.             return _returnVars;
  145.         }
  146.        
  147.         public function get numberOfFilesProcessed():int
  148.         {
  149.             return _numberOfFilesProcessed;
  150.         }
  151.        
  152.         public function get numberOfCurrentFile():int
  153.         {
  154.             return _numberOfCurrentFile;
  155.         }
  156.        
  157.         public function get numberOfFiles():int
  158.         {
  159.             return _numberOfFiles;
  160.         }
  161.     }
  162.  
  163. }
Add Comment
Please, Sign In to add comment