Foros del Web » Programando para Internet » PHP »

Cambiar nombre al archivo antes de subirlo

Estas en el tema de Cambiar nombre al archivo antes de subirlo en el foro de PHP en Foros del Web. Tengo el siguiente codigo, que al recibir los datos de un formulario sube el archivo al mismo directorio en el que se encuentra el script: ...
  #1 (permalink)  
Antiguo 11/12/2007, 11:24
 
Fecha de Ingreso: febrero-2006
Mensajes: 103
Antigüedad: 13 años, 10 meses
Puntos: 1
Cambiar nombre al archivo antes de subirlo

Tengo el siguiente codigo, que al recibir los datos de un formulario sube el archivo al mismo directorio en el que se encuentra el script:

Cita:
<?php
//tomo el valor de un elemento de tipo texto del formulario
$cadenatexto = $_POST["cadenatexto"];
echo "Escribió en el campo de texto: " . $cadenatexto . "<br><br>";

//datos del arhivo
$nombre_archivo = $HTTP_POST_FILES['userfile']['name'];
$tipo_archivo = $HTTP_POST_FILES['userfile']['type'];
$tamano_archivo = $HTTP_POST_FILES['userfile']['size'];
//compruebo si las características del archivo son las que deseo
if (!((strpos($tipo_archivo, "gif") || strpos($tipo_archivo, "jpeg")) && ($tamano_archivo < 100000))) {
echo "La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .gif o .jpg<br><li>se permiten archivos de 100 Kb máximo.</td></tr></table>";
}else{
if (move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], $nombre_archivo)){
echo "El archivo ha sido cargado correctamente.";
}else{
echo "Ocurrió algún error al subir el fichero. No pudo guardarse.";
}
}
?>
Me gustaria saber como puedo cambiar el nombre al archivo que envia el usuario antes de guardarlo en la carpeta y ponerle como nuevo nombre una cadena numerica que almacenare en una variable.

Me gustaria saber ademas como podria comprobar que esa cadena numerica que almaceno en la variable (la hare de forma aleatoria) no existe ya en el directorio como nombre de un fichero para evitar que se intentara almacenar un fichero que ya tiene ese nombre.

Thanks.
  #2 (permalink)  
Antiguo 11/12/2007, 11:34
 
Fecha de Ingreso: diciembre-2004
Mensajes: 98
Antigüedad: 15 años
Puntos: 0
Re: Cambiar nombre al archivo antes de subirlo

Hola:

Pues así a primer golpe se me ocurren dos cosas.
1 renombrar el fichero antes de subirlo.
2 renombrarlo una vez en su destino

espero que te sirva
  #3 (permalink)  
Antiguo 11/12/2007, 11:57
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 14 años, 4 meses
Puntos: 638
Re: Cambiar nombre al archivo antes de subirlo

hola, aqui te dejo un link donde okram da una solucion muy buena y facil de emplear:
http://www.forosdelweb.com/f18/subir...-por-_-527826/

saludos y suerte
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #4 (permalink)  
Antiguo 11/12/2007, 12:26
 
Fecha de Ingreso: febrero-2006
Mensajes: 103
Antigüedad: 13 años, 10 meses
Puntos: 1
Re: Cambiar nombre al archivo antes de subirlo

Gracias a los dos, este foro es increible, apenas puse la duda y ya me disteis solucion. Muchas gracias por vuestras respuestas, probare con ese enlace. Thanks.

Pos: Algo que no entiendo es, ¿en que parte del anterior codigo reemplazo el nombre?

Última edición por Vj_DarkHunter; 11/12/2007 a las 12:47
  #5 (permalink)  
Antiguo 11/12/2007, 17:57
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Cambiar nombre al archivo antes de subirlo

Es en esta parte donde defines el nombre y el path destino de tu archivo:

Código PHP:
$nombre_archivo $HTTP_POST_FILES['userfile']['name'];
// .....
if(move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], $nombre_archivo)){ 
Date una vuelta por el manual oficial de PHP para la función move_uploaded_file()

Puedes cambiar $nombre_archivo, y asignarle un nuevo nombre:
Código PHP:
$extension pathinfo($_FILES['userfile']['name'],PATHINFO_EXTENSION);
$nombre_archivo "nombre_nuevo.".$extension
OJO: Si lo haces de tal forma, debes buscar una forma de evitar que los archivos subidos tomen los mismos nombres, algo como:
Código PHP:
$extension pathinfo($_FILES['userfile']['name'],PATHINFO_EXTENSION);
$random substr(md5(time().rand()),2,8);
$nombre_archivo "nombre_nuevo_$random.$extension"
Un saludo,
  #6 (permalink)  
Antiguo 11/12/2007, 20:38
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 13 años, 8 meses
Puntos: 33
Re: Cambiar nombre al archivo antes de subirlo

Vj_DarkHunter:
Una vez que ya lo has subido el archivo y esta ubicado exitosamente en un directorio determinado, utiliza la funcion rename() de php y podras cambiarle nombre a tu archivo.
http://www.php.net/manual/es/function.rename.php
En ese link encontraras toda la info. para realizar la operacion que deseas.
Saludos
Y espero te ayude
Franco
  #7 (permalink)  
Antiguo 12/12/2007, 10:27
 
Fecha de Ingreso: febrero-2006
Mensajes: 103
Antigüedad: 13 años, 10 meses
Puntos: 1
Re: Cambiar nombre al archivo antes de subirlo

Gracias okram, muy buena tu respuesta.
franco190453, no me interesa cambiarlo una vez subido para evitar problemas de que el nombre ya se este utilizando en el directorio, es mejor hacerlo al momento de subirlo. Igualmente, gracias a todos por vuestras respuestas.

Saludos.
  #8 (permalink)  
Antiguo 12/12/2007, 21:34
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 13 años, 8 meses
Puntos: 33
Re: Cambiar nombre al archivo antes de subirlo

Vj_DarkHunter:
Si tu preocupacion es que el nombre ya ha sido utilizado por otro usuario, pues debes hacer un if(file_exists(Aqui la ruta con el nombre del archivo) {
Mandas un mensaje y con un exit() el usuario vuelve a iniciar}.
Saludos
Y espero te ayude
Franco
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 21:24.