2017-03-09 1 views
2

Ich versuche, eine Datei an einen Benutzer angegebenen Ort zu speichern, aber Probleme mit Flex leite 3/Flash Player 9.Herunterladen einen bytearray mit Flex 3/Flash 9

ich ursprünglich diese Arbeit mit Flash gemacht 4.6 mit dem folgenden Code:

protected function pdfBth_printPDF(event:MouseEvent):void 
{ 
    var createPDF:PDF = new PDF(Orientation.PORTRAIT, Unit.MM, Size.A4) 
    var image:ImageSnapshot = ImageSnapshot.captureImage(albumListGrid, 500, new JPEGEncoder()); 
    var resize:Resize = new Resize (Mode.RESIZE_PAGE, Position.CENTERED); 
    createPDF.addPage(); 
    createPDF.addImageStream(image.data, ColorSpace.DEVICE_RGB, resize); 

    var ba:ByteArray = createPDF.save(Method.LOCAL); 
    new FileReference().save(ba,"AlbumList.pdf");  
} 

das funktionierte perfekt, eine Momentaufnahme einer Liste Gitter nehmen, es in ein PDF drehen und in einem gewählten Ort zu speichern.

Das Problem ist FileReference.save existiert nicht in Flex 3 mit Flash Player 9 (Von dem, was ich sagen kann). Wie mache ich die gleiche Funktionalität mit Flex 3/FP9? Ich möchte, dass alle Arbeiten auf der Client-Seite erledigt werden, und ein Upgrade von Flex oder FP ist derzeit keine Option. Jede Hilfe wird geschätzt !!!

+0

Verwenden Sie ActionScript 3? –

Antwort

1

Flex 3 oder Flash Player 9 unterstützen das lokale Speichern von Dateien nicht. Die einzige Problemumgehung dafür besteht darin, die Datei auf einen Server hochzuladen und von dort herunterzuladen.

Werfen Sie einen Blick auf this example, die erläutert, wie es geht.

+0

Ok. Das ist etwas, was ich gesehen habe, als ich recherchiert habe, nur in der Hoffnung auf einen Workaround. Vielen Dank! – user2921015

+0

@ user2921015 für eine mögliche Problemumgehung ... Wenn Ihre Anwendung (SWF) in einem Browser läuft, könnten Sie 'externalInterface' verwenden, um die 'ba'-Byte-Werte an ein Javascript-Array zu übergeben und dann HTML-Code zu verwenden Funktion), um einen Speicherdialog aufzurufen ... Untersuchen Sie diese Option. –