Comunidad de diseño web y desarrollo en internet online

Save file AIR

Citar            
MensajeEscrito el 26 Sep 2012 02:59 pm
Hola a todos!

Alguien sabe si es posible descargar un archivo desde un servidor ( xml o imagen ) y guardarlo dentro del tenefono con AIR para andoid?

lo q necesito hacer es como una especie de actualizar mi app desde una base de datos.

Saludos y gracias!

Por fabri_bit

36 de clabLevel



 

chrome
Citar            
MensajeEscrito el 26 Sep 2012 04:21 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 26 Sep 2012 05:41 pm
es decir, primero descargo el archivo o la imagen q necesito guardar y luego como la guardo? hay alguna funcion especifica del objeto File para eso?

Por fabri_bit

36 de clabLevel



 

chrome
Citar            
MensajeEscrito el 26 Sep 2012 05:49 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 27 Sep 2012 09:08 am
BuenAS:

Hablando de la API de File:

File

En el directorio de la aplicación sólo se pueden leer archivos. Además en SO Android debes utilizar la ruta url y NO nativePath.

En iOS sí puedes acceder con nativePath.

Por ejemplo, para obtener la ruta de un xml guardado en la carpeta xml en el directorio de la aplicacion

Código ActionScript :

File.applicationDirectory.resolvePath("xml/mi_documento.xlm").url


En el directorio storage puedes guardar y recuperar archivos siempre que no desinstales la app. Perduran de una sesión a otra, y creo que es una opción que te puede valer para lo que comentas que vas ha hacer.

Código ActionScript :

var storage:File = File.applicationStorageDirectory;


Otra opción, para guardar datos de la sesión, es crear un directorio temporal. Cuidado, estos datos no puedes recuperarlos en la siguiente sesion:

Código ActionScript :

var temp:File = File.createTempFile();


Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 27 Sep 2012 12:11 pm
barbaro muchas gracias, pero hay algo q no tengo bien en claro...

supongamos q cargo un xml q tengo en mi servidor, ( var mi_xml:XML = event.target.data ) luego quiero guardar este xml en este directorio

var storage:File = File.applicationStorageDirectory;

debo utilizar alguna otra funcion del objeto File o como es posible hacerlo?

Por fabri_bit

36 de clabLevel



 

chrome
Citar            
MensajeEscrito el 27 Sep 2012 02:10 pm
BuenAS:

En la variable path estaría la ruta del archivo que quieres guardar.
la variable file es el archivo donde vas a guardar el xml que, por ejemplo, llamo "archivo_xml_guardado.xml".
En la variable xml estaría el XML que quieres guardar.

Código ActionScript :

var path:String = File.applicationStorageDirectory.resolvePath("archivo_xml_guardado.xml");
var file:File = File.applicationDirectory.resolvePath(path);

try
{
   var stream:FileStream = new FileStream();
   stream.open(file, FileMode.WRITE);
   stream.writeUTFBytes(xml.toXMLString());
   stream.close();
}
catch (e:Error)
{
   trace("Error: ", e.message);
}



Creo que no se me pasa nada, pero testealo por si he comietido algún error tipográfico.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 27 Sep 2012 02:13 pm
Mira, se me había pasado un error:

Código ActionScript :


var xml:XML;//Este sería el XML que quieres guardar
var path:String = File.applicationStorageDirectory.resolvePath("archivo_xml_guardado.xml").url;
var file:File = File.applicationDirectory.resolvePath(path);

try
{
   var stream:FileStream = new FileStream();
   stream.open(file, FileMode.WRITE);
   stream.writeUTFBytes(xml.toXMLString());
   stream.close();
}
catch (e:Error)
{
   trace("Error: ", e.message);
}

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 27 Sep 2012 02:36 pm
Barbaro funciona muchas gracias!! para guardar imagenes supongo q la funcion writeUTFBytes debo reemplazarla por alguna otra, voy a leer en la documentacion un poco mas

Por fabri_bit

36 de clabLevel



 

chrome
Citar            
MensajeEscrito el 27 Sep 2012 02:51 pm
BuenAS:

Si la variable "bmpd" tiene el bitmapdata de la imagen y "path" la ruta al archivo que quieres guardar

Código ActionScript :

var file:File = File.applicationDirectory.resolvePath(path);

var byteArray:ByteArray;

if (file.extension.toLowerCase() == "png")
   byteArray = (new PNGEncoder()).encode(bmpd)
else
   byteArray = (new JPEGEncoder(85)).encode(bmpd);

try
{
   var stream:FileStream = new FileStream();
   stream.open(file, FileMode.WRITE);
   stream.writeBytes(byteArray, 0, byteArray.length);
   stream.close();
}
catch (e:Error)
{
   Alert.show("Error: " + e.message, "SaveImageCommand: Write file error)");
}



Algo así debería funcionar.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 27 Sep 2012 02:53 pm
Aclarar que según sea la extensión del archivo destino png o jpg, utilizo un codificador u otro.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome

 

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