Comunidad de diseño web y desarrollo en internet online

CREAR Y GUARDAR ARCHIVO XML Y CARGARLO

Citar            
MensajeEscrito el 18 May 2010 11:09 am
Hola a todos:

Hace poco que he descubierto el método 'save' de la clase FileReference y me gustaría saber cómo utilizarla para primero crear un archivo XML y después guardarlo a nivel local, así como su carga. Este proceso sé hacerlo para AIR pero quisiera hacerlo usando AS3 y el Flash Player 10 que es que permite hacer ésto.

Agradezco de antemano vuestra ayuda.

Por jose_br

20 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 19 May 2010 02:31 am
Si te entendi bien (y creo que lo hice) y quieres descargar un archivo a tu aplicacion para luego guardarlo en el cliente te dire que con flash NO se puede. Eso viola la sandbox de flashplayer y es muy quisquillosa si lo que quieres es que se guarde en el server es otro tema. Pero viendomelo venir, flash player no permite guardar archivos en el pc del cliente. la gente lo usaria para meter virus masivos ^_^.

Saludos

Por Atomsk

350 de clabLevel

3 tutoriales

 

firefox
Citar            
MensajeEscrito el 19 May 2010 06:32 am
Sí, yo también pensaba lo mismo hasta que descubrí el método 'save'. Prueba el siguiente código, asegurándote de hacerlo en CS4 (Script ActionScript 3.0) y eligiendo el reproductor Flash Player 10 en la configuración de publicación:

Código ActionScript :

import flash.events.*;
import flash.net.FileReference;
var fr:FileReference = new FileReference();
fr.save("Mensaje de prueba","miarchivo.txt");


Observa que se abre automáticamente el cuadro de diálogo que te permite grabar el archivo en el lugar del disco duro que elijas.

Un saludo.

Por jose_br

20 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 20 May 2010 03:56 am
Hola espero que te sirva este pequeño code, ya que este sube archivos xml al servidor ya es cuestion de adecuarlo a tu necesidad.

Código :

      private function subeExamen(event:MouseEvent):void{
         
         //creamos el XML para guardar
         var miExamen:String=' <Examen id= "';
         miExamen += idExa;
         miExamen +='">';
         miExamen +=' <pregunta1> hola</pregunta1>';
         miExamen +='</Examen>';
         
         var examen:XML = new XML(miExamen);
         
            //metodo para enviar
            var loader:URLLoader = new URLLoader();
            loader.addEventListener(Event.COMPLETE, onComplete);
            
            var phpURL:URLRequest = new URLRequest("http://localhost/Examen%20Online/Examen/guardaExamen.php");
            phpURL.method = "POST";
            var variables:URLVariables = new URLVariables();
            variables.filename = idExa + ".xml";//nombre del XMl
            variables.xmlData = examen;//El objeto XML
            phpURL.data = variables;//asignamos las variables para enviar
            
            loader.load(phpURL);
         
      }

Espero haber ayudado. Saludos

Por FlexandFlash

48 de clabLevel



 

msie7
Citar            
MensajeEscrito el 21 May 2010 06:14 am
Por cierto, ¿sabéis si con el método 'save' puedo hacer que el tipo del archivo a grabar ya venga predeterminado, es decir, forzar a que el usuario sólo escriba el nombre que desee pero que el formato del archivo sea 'xml' o de cualquier tipo que interese como sucede cuando se utiliza FileFilter?

Y una cosa más, ¿es posible cambiar el título del cuadro de diálogo que aparece?

Saludos.

Por jose_br

20 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 08 Oct 2014 12:16 am
una pregunta... yo estoy usando

import flash.events.*;
import flash.net.FileReference;
var fr:FileReference = new FileReference();
fr.save("Mensaje de prueba","miarchivo.txt");

este codigo para guardar un archivo txt..... pero necesito que otras cosas que guarden se creen en ese mismo txt....que no se remplaze y no se elimine lo que ya existia es decir ejemplo:

guarde "a";
ahora quiero guardar "d"
quiero que quede = "a" "d"

Por cecaza

4 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 Oct 2014 06:38 am
Si quieres añadir más información al fichero de texto entiendo que tendrás que leer el contenido y meterlo en una variable.
Luego añades a dicha variable la nueva información y grabas de nuevo el fichero con toda la información.Supongo que debería funcionar...

Por empardopo

71 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 Oct 2014 06:52 am
mmm un ejemplo empardopo? por favor....no sabría como meter el contenido leído, empezando que no sabría como leerlo D:

Por cecaza

4 de clabLevel



 

chrome
Citar            
MensajeEscrito el 09 Oct 2014 10:59 am
En breve tengo que ponerme con el tema pero ahora mismo no he tenido tiempo.

Tengo guardado este link con información/ejemplos de Load y Save.

Te reproduzco el código para el Load

Código Flex :

ml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

    <mx:Script>
        <![CDATA[
            import flash.net.FileReference;
            import flash.net.FileFilter;

            import flash.events.IOErrorEvent;
            import flash.events.Event;

            import flash.utils.ByteArray;

            //FileReference Class well will use to load data
            private var fr:FileReference;

            //File types which we want the user to open
            private static const FILE_TYPES:Array = [new FileFilter("Text File", "*.txt;*.text")];

            //called when the user clicks the load file button
            private function onLoadFileClick():void
            {
                //create the FileReference instance
                fr = new FileReference();

                //listen for when they select a file
                fr.addEventListener(Event.SELECT, onFileSelect);

                //listen for when then cancel out of the browse dialog
                fr.addEventListener(Event.CANCEL,onCancel);

                //open a native browse dialog that filters for text files
                fr.browse(FILE_TYPES);
            }

            /************ Browse Event Handlers **************/

            //called when the user selects a file from the browse dialog
            private function onFileSelect(e:Event):void
            {
                //listen for when the file has loaded
                fr.addEventListener(Event.COMPLETE, onLoadComplete);

                //listen for any errors reading the file
                fr.addEventListener(IOErrorEvent.IO_ERROR, onLoadError);

                //load the content of the file
                fr.load();
            }

            //called when the user cancels out of the browser dialog
            private function onCancel(e:Event):void
            {
                trace("File Browse Canceled");
                fr = null;
            }

            /************ Select Event Handlers **************/

            //called when the file has completed loading
            private function onLoadComplete(e:Event):void
            {
                //get the data from the file as a ByteArray
                var data:ByteArray = fr.data;

                //read the bytes of the file as a string and put it in the
                //textarea
                outputField.text = data.readUTFBytes(data.bytesAvailable);

                //clean up the FileReference instance

                fr = null;
            }

            //called if an error occurs while loading the file contents
            private function onLoadError(e:IOErrorEvent):void
            {
                trace("Error loading file : " + e.text);
            }

        ]]>
    </mx:Script>


    <mx:Button label="Load Text File" right="10" bottom="10" click="onLoadFileClick()"/>
    <mx:TextArea right="10" left="10" top="10" bottom="40" id="outputField"/>

</mx:Application>


Entiendo que dicho código debería funcionar.
Con ese código al final meterás el contenido del fichero seleccionado en outputField así que luego se trataría de agregarle el texto que necesites a dicha variable para luego guardar el fichero con el código que has puesto antes; sólo que en vez de meter texto meterías tu variable.

variableFinal = outputfield + "tutextoAAgregar";
fr.save(variableFinal,"miarchivo.txt");

Ya te digo que hablo "teóricamente" porque no lo he probado pero sería algo así.

Saludos

Por empardopo

71 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.