Comunidad de diseño web y desarrollo en internet

Cambiar nombres al subir archivos con Actionscript 3

A muchos, nos pasa que queremos subir ficheros desde nuestras aplicaciones Flex o Flash, y para ellos usamos la clase a tal efecto llamada Filereference, pero también nos interesa sobremanera el poder conocer de antemano la ruta y nombre final de nuestro fichero en el servidor, y sobre todo tratar dicho nombre para evitar duplicados.

A continuación muestro un extracto de un objeto que realicé a tal efecto, la idea que aplico es la de aprovechar el envío por POST que genera Filereference para enviar el fichero, para enviar variables propias seteadas de manera precisa, para poder usar esa información extra en el servicio remoto que tratará el fichero subido, y a la postre lo renombrará y ubicará en el lugar indicado por nosotros en esas variables propias.

La función selectFile evento select de la caja de ficheros de Filereference, fijaos que creo una variable llamada Filename para llevar el nombre que quiero tener en el fichero al servicio remoto que lo creará, genUid() es una función propia que me genera un time shot para garantizar un nombre único en mi fichero.

Código :

private var file:FileReference;
private var req:URLRequest;
private var vars: URLVariables;

//Llamada por el usuario
public function openFile():void
{
   vars.description = "DESCRIPCION que quieras pasar si para lo que sea";
   vars.Remotefolder = "/www/files";
   req.url = url;
   req.data = vars;      
   req.method = URLRequestMethod.POST;
       
   file.addEventListener(Event.SELECT, selectFile);
            
   file.browse();
}

//Interna para Filereference
private function selectFile(event:Event):void 
{
   file.removeEventListener(Event.SELECT,selectFile);
   vars.Filename = genUid() + file.name;
   file.upload(req);
}


Luego en el servicio solo tienes que acceder a las variables que has creado en vars, por método POST, y listo :) en PHP sería algo como esto:

Código :

<?php
if(!empty($_FILES["Filedata"]))
   {
      if(!empty($_POST["remotefolder"]))
         $folder = utf8_decode($_POST["remotefolder"]);
      
      $uploaddir.= utf8_decode($_POST["Filename"]);

      if(move_uploaded_file($_FILES["Filedata"]["tmp_name"], $uploaddir))
      {
         chmod($uploaddir,0777);
         echo "File Uploaded :)";
      }
      else
         echo "Cannot upload this file!";
   }
?>


También podéis usar el servlet, que realicé hace unos meses y he posteado como aporte, como servicio remoto en Java para el tratamiento de vuestros ficheros subidos con nombres personalizados en Java.



Espero que os sirva ;)

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate