Zurück   Flashforum > Flex und AIR > Adobe AIR

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 15-08-2009, 16:22   #1 (permalink)
AIRcrobat
 
Registriert seit: Mar 2009
Ort: München
Beiträge: 78
Question Mehrere Files in einer Schleife mit load() laden

Hallo zusammen,

ich hänge schon seit 2 Tagen an folgendem Problem und bekomme das allein irgendwie nicht gebacken:

Ich habe eine Funktion, die mir rekursiv alle Dateien aus einem Ordner und dessen Unterordner liest. Das funktioniert auch wunderbar. Nur möchte ich jede dieser ausgelesenen Dateien mit der funktion load() laden, um sie anschließend in ein Bytearray zu schreiben und dann auf meinen Server zu laden.

Das Uploadskipt funktioniert wenn ich es einzeln für eine Datei aufrufe wunderbar. Auch das Ordnerauslesen funktioniert nur bekomme ich die beiden Dinge nicht verbunden.

Die Funktion loaded() wird nie aufgerufen, auch wenn ich ewig warte. Das sollte eigentlich nicht sein oder? Bei den Dateien handelt es sich um *.php dateien und kleine Bilder. Also an der Größe kann das nicht liegen.

Hat jemand eine Idee, wie ich das zum Laufen bekommen?

Hier mal der Quelltext:
PHP-Code:
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" 
                        layout="absolute" creationComplete="init()">
    <mx:Script>
        <![CDATA[
            
            private function init():void {
                // ...
                var dir:File = File.desktopDirectory.resolvePath("testfolder");
                uploadFiles(dir);
            }
            
            // Hochladen der Dateien
            private function uploadFiles(dir:File):void {
                var dirlist:Array = dir.getDirectoryListing();
                
                // loop the array of files and display them
                for each(var ufile:File in dirlist) {
                    if(!ufile.isDirectory){
                        if(ufile.name == ".htaccess" || ufile.name.slice(0,1) != ".") {
                            var refUploadFile:File = new File();
                            refUploadFile.nativePath = dir.nativePath.toString()+"/"+ufile.name;
                            refUploadFile.addEventListener(Event.COMPLETE, loaded);
                            trace("File to load: "+refUploadFile.nativePath.toString());
                               refUploadFile.load();
                               
                        }
                    } else {
                        var nextDir:File = new File();
                        nextDir.nativePath = dir.nativePath.toString()+"/"+ufile.name;
                        uploadFiles(nextDir);
                    }
                }
            }
            
            private function loaded(event:Event):void {
                trace("File loaded: "+event.target.nativePath.toString());
                
                /*
                ... in ByteArray umwandeln und dann auf den Server schieben
                */
            }
            
        ]]>
    </mx:Script>
</mx:WindowedApplication>
Vielen Dank für eure Hilfe,

Lg,
Tom
TheChucky ist offline   Mit Zitat antworten
Alt 18-08-2009, 07:46   #2 (permalink)
Neuer User
 
Registriert seit: Jan 2004
Beiträge: 18
Cool

Hi hatte ein ähnliches Problem aber mit dem ModulLoader, hab es so gelöst das ich mir zu erst ein Array mit Dateipfaden erstellt habe und dann den mit einer 'rekursiven' function dateien aus dem Array geladen habe und erst wenn Event.COMPLETE gefeuert wurde hab in der function weiter gemacht

PHP-Code:
public var fileArr:Array = new Array();
public var 
z:int;


private function 
uploadFiles(dir:File):void {
    var 
dirlist:Array = dir.getDirectoryListing();

    
// loop the array of files and display them
    
for each(var ufile:File in dirlist) {
        if(!
ufile.isDirectory){
            if(
ufile.name == ".htaccess" || ufile.name.slice(0,1) != ".") {
                
fileArr.push(dir.nativePath.toString()+"/"+ufile.name;);                               
            }
        } else {
            var 
nextDir:File = new File();
            
nextDir.nativePath dir.nativePath.toString()+"/"+ufile.name;
            
uploadFiles(nextDir);
        }
    }

    
loadFiles();




private function 
loadFiles():void {    
    
refUploadFile.nativePath fileArr[z++];
    
refUploadFile.addEventListener(Event.COMPLETEloaded);
    
trace("File to load: "+refUploadFile.nativePath.toString());
    
refUploadFile.load(); 
}
            
private function 
loaded(event:Event):void {
    
trace("File loaded: "+event.target.nativePath.toString());
    
loadFiles()

so in etwa


mfg
Andrey
Argomix ist offline   Mit Zitat antworten
Alt 18-08-2009, 08:11   #3 (permalink)
AIRcrobat
 
Registriert seit: Mar 2009
Ort: München
Beiträge: 78
Ja Danke für den Tip, hab das jetzt auch so ähnlic gelöst

Lg,
Tom
TheChucky ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 14:58 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele