Foros del Web » Programando para Internet » PHP »

Como renombrar un archivo al subirlo ?

Estas en el tema de Como renombrar un archivo al subirlo ? en el foro de PHP en Foros del Web. Saludos gente, La cuestion esta asi, tengo una pagina que lo que hace es subir un archivo a una carpeta llamada catalogs, el codigo que ...
  #1 (permalink)  
Antiguo 21/03/2015, 13:11
 
Fecha de Ingreso: noviembre-2013
Ubicación: New York
Mensajes: 114
Antigüedad: 4 años, 11 meses
Puntos: 1
Pregunta Como renombrar un archivo al subirlo ?

Saludos gente,

La cuestion esta asi, tengo una pagina que lo que hace es subir un archivo a una carpeta llamada catalogs, el codigo que tengo hace su debido trabajo pero ahora quiero renombrar el archivo y ponerle un nombre unico que no se vaya a repetir nunca, una vez que ya tenga ese nombre unico ponerselo al archivo que se subio y en una variable almacenar toda la ruta con el nombre unico dado al archivo subido. Ahorita tengo este codigo:
Código PHP:
<?php
$frm_upload 
$_SERVER['PHP_SELF'];

  
$nombre $_FILES['archivo']['name'];
  
$nombre_tmp $_FILES['archivo']['tmp_name'];
  
$tipo $_FILES['archivo']['type'];
  
$tamano $_FILES['archivo']['size'];
 
  
$ext_permitidas = array('jpg','jpeg','gif','png');
  
$partes_nombre explode('.'$nombre);
  
$extension end$partes_nombre );
  
$ext_correcta in_array($extension$ext_permitidas);
 
  
$tipo_correcto preg_match('/^image\/(pjpeg|jpeg|gif|png)$/'$tipo);
 
  
$limite 500 1024;
 
  if( 
$ext_correcta && $tipo_correcto && $tamano <= $limite ){
    if( 
$_FILES['archivo']['error'] > ){
      echo 
'Error: ' $_FILES['archivo']['error'] . '<br/>';
    }else{
      echo 
'Nombre: ' $nombre '<br/>';
      echo 
'Tipo: ' $tipo '<br/>';
      echo 
'Tamaño: ' . ($tamano 1024) . ' Kb<br/>';
      echo 
'Guardado en: ' $nombre_tmp;
 
      if( 
file_exists'catalogs/'.$nombre) ){
        echo 
'<br/>El archivo ya existe: ' $nombre;
      }else{
        
move_uploaded_file($nombre_tmp,"catalogs/" $nombre);
 
        echo 
"<br/>Guardado en: " "catalogs/" $nombre;
      }
    }
  }else{
    echo 
'Archivo inválido';
  }
?>
<form action="<?php echo $frm_upload?>" method="post" enctype="multipart/form-data">
  <label for="archivo">Archivo:</label>
  <input type="file" name="archivo" id="archivo" />
  <br/>
  <input type="submit" value="Enviar" />
</form>
He buscado en la red y sinceramente no he podido encontrar un ejemplo que solucione mi problema. gracias !
  #2 (permalink)  
Antiguo 21/03/2015, 13:15
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 785
Antigüedad: 9 años, 8 meses
Puntos: 9
Respuesta: Como renombrar un archivo al subirlo ?

Tan fácil como si estás subiendo un fichero a x directorio, cambiarle el nombre..

Código PHP:
Ver original
  1. move_uploaded_file($nombre_tmp,"catalogs/abcdefg" . $nombre);

El nombre puedes generarlo aleatoriamente, yo suelo utilizar uniqid() junto con otras funciones
  #3 (permalink)  
Antiguo 21/03/2015, 13:28
 
Fecha de Ingreso: noviembre-2013
Ubicación: New York
Mensajes: 114
Antigüedad: 4 años, 11 meses
Puntos: 1
Respuesta: Como renombrar un archivo al subirlo ?

Amigo me funciono que tonto que soy estoy tan agotado que no me di cuenta de q era solo concatenar jajaja. pregunta... la funcion uniqid() te da un codigo que nunca se va a repetir ?
  #4 (permalink)  
Antiguo 21/03/2015, 13:29
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 785
Antigüedad: 9 años, 8 meses
Puntos: 9
Respuesta: Como renombrar un archivo al subirlo ?

Obtiene un identificador único prefijado basado en la hora actual en microsegundos.

Cita:
Esta función no crea valores de tipo string aleatorios ni impredecibles. Esta función no debe usarse con propósitos de seguridad. Use una función o generador aleatorios criptográficamente seguros y funciones hash criptográficamente seguras para crear ID de segurdidad impredecibles.
Lee el manual que te he pasado, ahí lo explica y tienes ejemplos.

Etiquetas: renombrar, subirlo, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:32.