Flashhilfe.de - Flash Community

File Klasse variabel halten [Flash 10]

 


AntwortenRegistrieren Seite1  

Mole23#1
Benutzerbild von Mole23
Beiträge: 50
Wohnort: Hamburg
Registriert: Feb 2010

16.02.2010, 15:52

Moin zusammen,

ich versuche jetzt seit ein paar Stunden, eine File Klasse mit variablen Pfad zu erstellen. So langsam habe ich den Verdacht, dass es garnicht geht.

Kann das jemand bestätigen?


Diese Varianten gehen zum Beispiel nicht:

ActionScript:
1
2
var myFile:File = new File();
myFile.url = an.selectedItem.pdf;


oder auch:

ActionScript:
1
2
var myFile:File = new File();
myFile.nativePath = an.selectedItem.pdf;
Mole23#2
Benutzerbild von Mole23
Beiträge: 50
Wohnort: Hamburg
Registriert: Feb 2010

Themenautor/in

16.02.2010, 16:32

Um das ganze mal etwas genauer zu erleutern:

Ich zeige in meiner App ein PDF an, dessen Pfad ich aus einer xml-Datei auslese. Das haut auch hin wie folg:

ActionScript:
1<mx:HTML x="391" y="43" height="490" width="354" location="{an.selectedItem.pdf}"/>



An einer anderen Stelle, hänge ich dieses PDF als Emailanhang an eine Mail an und versende diese via Webservice. Dies geht auch wenn ich den Pfad direkt auswähle. Allerdings soll dieser Pfad jetzt variabel sein.

Hardcoded sah das so aus und ging auch:

ActionScript:
1myFile = File.applicationDirectory.resolvePath("data/Test-PDF.pdf");
crackz@net#3
Benutzerbild von crackz@net
Beiträge: 77
Registriert: Mar 2006

16.02.2010, 16:51

was steht den genau in deiner pdf??

wenn du nur denn relativen pfad zur pdf drinnen stehen hast dann versuch doch mal:

ActionScript:
1myFile = File.applicationDirectory.resolvePath(an.selectedItem.pdf.toString);


wobei du das ".toString" nur brauchst wenn deine Variable "an" ein XML object ist also als XMLList oder XMLListCollection.

mfg
ich
Mole23#4
Benutzerbild von Mole23
Beiträge: 50
Wohnort: Hamburg
Registriert: Feb 2010

Themenautor/in

16.02.2010, 17:01

Erstmal danke, allerdings habe ich das Problem, dass ich einen "applicationDirectory.resolvePath" nicht mehr verwenden kann, weil die Option letztendlich über einen http-Zugriff laufen soll.

Aber ich teste das trotzdem mal mit toString... evtl. ist es das ja schon...
Mole23#5
Benutzerbild von Mole23
Beiträge: 50
Wohnort: Hamburg
Registriert: Feb 2010

Themenautor/in

17.02.2010, 11:36

Ich versuche mein Problem noch einmal etwas anders zu Beschreiben:

Ich suche eine Möglichkeit um eine Datei, z.B. ein PDF via URL als Fileobjekt zu laden. Praktisch über die Funktion file.load()...


Mit einem lokalen Zugriff habe ich es auf folgende Weise hinbekommen:
ActionScript:
1myFile = File.applicationDirectory.resolvePath("data/Test-PDF.pdf");


Da ich den Pfad später allerdings variabel und nicht lokal verwenden möchte, suche ich nach einer passenden Möglichkeit. Falls die Fileklasse hierzu nicht in der Lage ist, wäre auch nett, wenn mir jemand die Aktion mit einem FileStreamObjekt erklärt.
crackz@net#6
Benutzerbild von crackz@net
Beiträge: 77
Registriert: Mar 2006

17.02.2010, 14:49

moin moin

also ich habe immer noch nicht ganz verstanden was du genau machen willst....

aber schau mal in dir URLLoader und die URLRequest Klassen vieleicht hilft dir das ein bisschen weiter.... Die File und die FileStream klassen sind eig fuer denn lokalen zugrif auf das Filesystem gedacht.

wenn du mit dennen nicht zurecht kommen kannst ja hier noch ein mal dazu einen tread starten :)

mfg
ich
Mole23#7
Benutzerbild von Mole23
Beiträge: 50
Wohnort: Hamburg
Registriert: Feb 2010

Themenautor/in

17.02.2010, 14:53

Schonmal gut, dass du das sagst!

Vor ca. einer halben Stunde bin ich zufällig auch auf diese Klasse gestoßen. Ich habe damit auch schonmal losgelegt, allerdings erhalte ich bei ".data" immer nur den Link. Weißt du zufällig wie ich den Inhalt der Datei erhalte?


Sieht im Moment so aus:

ActionScript:
1
2
3
4
5
6
7
8
private function loadFile():void {
var url:URLRequest;
var urlLoader:URLLoader;
url = new URLRequest("http://www.uni-muenster.de/Jura.itm/hoeren/materialien/Skript/Skript_Maerz2008.pdf");
urlLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, loadCompleteHandler);
urlLoader.load(url);
}
Mole23#8
Benutzerbild von Mole23
Beiträge: 50
Wohnort: Hamburg
Registriert: Feb 2010

Themenautor/in

17.02.2010, 16:57

So ich habe es hinbekommen. Nocheinmal vielen Dank an crackz@net!!!

LÖSUNG:


ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private function loadFile():void {
       
       var streamer:URLStream = new URLStream(  );
     
       streamer.addEventListener( ProgressEvent.PROGRESS, handleProgress );             
       streamer.load( new URLRequest(an.selectedItem.pdf) );
       streamer.addEventListener(Event.COMPLETE, loadCompleteHandler);
    }
   
    private function handleProgress( event:ProgressEvent ):void {
      var streamer:URLStream = URLStream( event.target );
      // trace( "Read byte: " + streamer.readByte(  ) );
    }
   private function loadCompleteHandler(event:Event):void {
        var streamer:URLStream = URLStream( event.target );
        var bytes:ByteArray = new ByteArray();
        streamer.readBytes(bytes);
        var encoderx:Base64Encoder = new Base64Encoder();
        encoderx.encodeBytes(bytes);
        inh = encoderx.drain();
        trace(inh);
Geändert von Mole23 am 18.02.10 um 12:30 Uhr
Mole23#9
Benutzerbild von Mole23
Beiträge: 50
Wohnort: Hamburg
Registriert: Feb 2010

Themenautor/in

17.02.2010, 17:12

Evtl. kennt ja jemand noch einen Weg, wie ich Dateinamen bekomme. Bei der klasse FileReference kann man ja zum Beispiel "FileRef.name" abfragen.

Geht das in diesem Fall auch irgendwie?


ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
private function loadFile():void {
       
       var streamer:URLStream = new URLStream(  );
     
       streamer.addEventListener( ProgressEvent.PROGRESS, handleProgress );             
       streamer.load( new URLRequest(an.selectedItem.pdf) );
       streamer.addEventListener(Event.COMPLETE, loadCompleteHandler);
    }
   
    private function handleProgress( event:ProgressEvent ):void {
      var streamer:URLStream = URLStream( event.target );
      // trace( "Read byte: " + streamer.readByte(  ) );
    }
   private function loadCompleteHandler(event:Event):void {
        var streamer:URLStream = URLStream( event.target );
        var bytes:ByteArray = new ByteArray();
        streamer.readBytes(bytes);
        var encoderx:Base64Encoder = new Base64Encoder();
        encoderx.encodeBytes(bytes);
        inh = encoderx.drain();
        trace(inh);
   
   
    arr.addItem("test.pdf"); // Hier müsste ich den namen irgendwie getten...
   arr.addItem(inh);
Geändert von Mole23 am 18.02.10 um 12:32 Uhr

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2020 Sebastian Wichmann - Flashhilfe.de