Comunidad de diseño web y desarrollo en internet online

Problema con FileReference y save

Citar            
MensajeEscrito el 05 Mar 2014 04:14 pm
Hola,
Estoy haciendo la opcion para que el usuario pueda grabar un archivo que genero en Flash.
Funciona todo muy bien, el archivo se genera y se graba sin problemas.
Sólo hay un problema, cuando el usuario selecciona la opcion de grabar se abre la ventana tipica de windows para que una elija donde lo quiere grabar y le cambie el nombre, etc... si el usuario no cambia el nombre se graba perfecto, pero si el usuario cambia el nombre entonces se pierde la extension del documento, en mi casa, .pdf ... y se graba un archivo sin extension....

Estuve buscando en foros y llegue al Bug 2898055 de Adobe, donde justo se trata de este tema... la verdad no hablo mucho inglés así que no lo entendí del todo bien.
Este es el link de Adobe por si alguien lo quiere ver:
https://bugbase.adobe.com/index.cfm?event=bug&id=2898055

Ahora bien, mi duda es la siguiente, despues de que el usuario guarde su archivo, hay alguna forma de revisar si el archivo contiene la extension y de no ser asi agregarsela???
Encontre algo en un foro que trataba del tema

Código ActionScript :

var onComplete:Function = function( file:FileReference ) : void
{
    if( file.name.toLowerCase().indexOf( ".pdf" ) < 0 ) onExtensionRemove();
    else response.callSuccess();
};


Pero no entiendo bien como hacerlo funcionar...

Muchas gracias

Por chochito_alegre

51 de clabLevel



Genero:Masculino  

Lima - Perú

firefox
Citar            
MensajeEscrito el 07 Abr 2014 03:16 am
Lamentablemente no hay forma de cancelar la llamada a filereference.save()
Si estas trabajando con AIR te conviene usar la clase File y FileStream, te da muchísimo más control sobre los archivos.

Con FileReference te quedan 2 opciones:
1 - Usar el método download(), y "bajar" el archivo generado desde el servidor (aca podes usar cancel() para cancelar la operación)
2 - Notificarle al usuario que cambió la extensión del archivo. y forzarlo a re-descargarlo (mala idea).

file = new FileReference();
file.save( "Texto de prueba", 'hola.txt');
file.addEventListener(Event.SELECT, selectHandler);

private function selectHandler(event:Event):void {
var extension:String = file.name.split('.').pop();
if(extension != 'txt') {
trace('Extension cambiada. Notificarle al usuario.');
}
}

Por rodrigolopezpeker

61 de clabLevel



 

chrome

 

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