Foros del Web » Programando para Internet » PHP »

Subiendo imágenes al servidor y renombrar si existe

Estas en el tema de Subiendo imágenes al servidor y renombrar si existe en el foro de PHP en Foros del Web. Saludos, tengo mi sistema para subir imágenes al servidor pero me gustaria que este si la imagen ya existe la renombrara o sino usara un ...
  #1 (permalink)  
Antiguo 04/01/2013, 16:37
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Subiendo imágenes al servidor y renombrar si existe

Saludos,
tengo mi sistema para subir imágenes al servidor pero me gustaria que este si la imagen ya existe la renombrara o sino usara un prefijo como fecha y hora... como se podria hacer esto?
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #2 (permalink)  
Antiguo 04/01/2013, 17:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Subiendo imágenes al servidor y renombrar si existe

Pues si quieres usar el prefijo, puedes usar date(), puedes usar file_exists() para verificar si existe antes la imagen.

Saludos.
  #3 (permalink)  
Antiguo 04/01/2013, 19:14
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Subiendo imágenes al servidor y renombrar si existe

pero a ver al subir mi imagen tengo esto

Código PHP:
$ediciondir'../images/';  

$uploaddir=$ediciondir;

if (!
is_dir($ediciondir)) {     mkdir($uploaddir0777);    }

move_uploaded_file($_FILES['img']['tmp_name'], $uploaddir $_FILES['img']['name']);    

$filename $_FILES['img']['name'];



  
$insertSQL sprintf("INSERT INTO noticias2 (id, titulo, contenido, img) VALUES (%s, %s, %s, %s)",

                       
GetSQLValueString($_POST['id'], "int"),
                       
GetSQLValueString($_POST['titulo'], "text"),
                       
GetSQLValueString($_POST['contenido'], "text"),
                        
GetSQLValueString($filename"text")); 
donde colocaria el prefijo??? en la consulta o aqui en el formulario

Código PHP:
 <input name="img" type="file" class="todopanel" id="img"  enctype="multipart/form-data"
de que manera podria?? con un datetime??? pero donde??? la idea es q le coloque a la imagen fecha y hora + el nombre de la imagen

si la imagen es DSC0012693 entonces al subirla quedaria 010120131100DSC0012693.jpg algo asi
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #4 (permalink)  
Antiguo 04/01/2013, 19:25
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Subiendo imágenes al servidor y renombrar si existe

deberías de agregarle el prefijo en ambas ya que imagino que guardas en la base de datos la ruta a la imagen que estas subiendo al servidor
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 04/01/2013, 19:43
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Subiendo imágenes al servidor y renombrar si existe

no.. en la base de datos no se guarda la ruta... solo el nombre de la imagen pues la ruta es unica, por eso deseo que solo renombre la imagen con un prefijo de fecha y hora... pero lo q no se es como se hace
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #6 (permalink)  
Antiguo 04/01/2013, 19:48
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Subiendo imágenes al servidor y renombrar si existe

pues entonces el prefijo + el nombre de la imagen será es el nuevo nombre de tu imagen cierto?? entonces tendrías que colocarle el prefijo para la subida ya que así se llamará y guardar en la base de datos el prefijo + el nombre ya que ese es el nuevo nombre de la imagen

(parece un trabalenguas pero creo que lo dije bien).

ahora como agregar el prefijo simplemente haciendo una concatenación entre el date() + el nombre de la imagen, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #7 (permalink)  
Antiguo 04/01/2013, 20:10
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Subiendo imágenes al servidor y renombrar si existe

pero en donde??? o sea q linea eso es lo q no entiendo... yo se q debo hacer el llamado del date() pero donde exactamente le dire "nombrame o inserta la imagen asi"
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #8 (permalink)  
Antiguo 04/01/2013, 20:27
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Subiendo imágenes al servidor y renombrar si existe

Primero debes comprobar si existe la imagen con la función file_exists()

Si existe entonces (una condición) coges el nombre de la imagen y le concatenas la fecha con la función date ($filename = $filename.date('Y-m-d-H-i-s');) y procedes a subir la imagen como estás haciendo.

Algo así básico:

Código PHP:
Ver original
  1. $filename = $_FILES['file']['name'];
  2.  
  3. if ($_FILES["file"]["error"] > 0) {
  4.     echo "Error: " . $_FILES["file"]["error"] . "<br />";
  5. } else {
  6.     if (file_exists("upload/$filename")) {
  7.         $f = explode('.', $filename);
  8.         $filename = $f[0] . date('YmdHis') . '.' . $f[1];
  9.     }
  10.     move_uploaded_file($_FILES["file"]["tmp_name"],
  11.         "upload/" . $filename);
  12.     echo "Subido: $filename";
  13. }

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 04/01/2013 a las 20:51
  #9 (permalink)  
Antiguo 04/01/2013, 21:14
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Subiendo imágenes al servidor y renombrar si existe

ok, entonces mi consulta para hacer el INSERT seguiria quedando
Código PHP:
$ediciondir'../images/';  

$uploaddir=$ediciondir;

if (!
is_dir($ediciondir)) {     mkdir($uploaddir0777);    }

move_uploaded_file($_FILES['img']['tmp_name'], $uploaddir $_FILES['img']['name']);    

$filename $_FILES['img']['name']; 
if (
$_FILES["file"]["error"] > 0) {
    echo 
"Error: " $_FILES["file"]["error"] . "<br />";
} else {
    if (
file_exists("upload/$filename")) {
        
$f explode('.'$filename);
        
$filename $f[0] . date('YmdHis') . '.' $f[1];
    }
    
move_uploaded_file($_FILES["file"]["tmp_name"],
        
"upload/" $filename);
    echo 
"Subido: $filename";

$insertSQL sprintf("INSERT INTO noticias2 (id, titulo, contenido, img) VALUES (%s, %s, %s, %s)",

                       
GetSQLValueString($_POST['id'], "int"),
                       
GetSQLValueString($_POST['titulo'], "text"),
                       
GetSQLValueString($_POST['contenido'], "text"),
                        
GetSQLValueString($filename"text")); 
y arriba seria
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #10 (permalink)  
Antiguo 04/01/2013, 21:19
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Subiendo imágenes al servidor y renombrar si existe

Si algo así, pero tienes 2 move_uploaded_file, el de arriba pásalo para abajo:

Código PHP:
Ver original
  1. move_uploaded_file($_FILES['img']['tmp_name'], $uploaddir . $filename);

y borra el de abajo.

Tienes que completarlo haciendo todas las condiciones de tamaño, tipo de archivo permitido etc...

Tal vez estos ejemplos te sirvan:

http://www.w3schools.com/php/php_file_upload.asp

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #11 (permalink)  
Antiguo 04/01/2013, 21:28
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Subiendo imágenes al servidor y renombrar si existe

Una pequeña sugerencia, si solo quieres comprobar si un archivo existe o no creo que deberías utilizar is_file ya que file_exists retorna true para directorios también.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #12 (permalink)  
Antiguo 04/01/2013, 22:41
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Subiendo imágenes al servidor y renombrar si existe

de echo solo deseo colocarle fecha y hora de prefijo al nombre de las imagenes...

andres borrro move_uploaded_file($_FILES['img']['tmp_name'], $uploaddir . $_FILES['img']['name']);

o dejo esta parte $_FILES['img']['name']); ?
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...

Etiquetas: renombrar, servidor, sos, subiendo
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 22:10.