Foros del Web » Programando para Internet » PHP »

script para subir imagenes

Estas en el tema de script para subir imagenes en el foro de PHP en Foros del Web. Buenos días, eh aqui un problema y me gustaría saber si tendría solución. En esta web conseguí un código para subir imágenes. (http://www.forosdelweb.com/wiki/PHP:Manejando_imagenes_al_subirlas_al_servidor) El script ...
  #1 (permalink)  
Antiguo 25/07/2012, 18:33
 
Fecha de Ingreso: mayo-2011
Mensajes: 19
Antigüedad: 12 años, 11 meses
Puntos: 0
script para subir imagenes

Buenos días, eh aqui un problema y me gustaría saber si tendría solución.
En esta web conseguí un código para subir imágenes. (http://www.forosdelweb.com/wiki/PHP:Manejando_imagenes_al_subirlas_al_servidor)

El script funciona de 10. Pero tengo 2 problemitas..
El primero es que no se puede subir una imagen que de nombre tenga espacios, como por ejemplo "sin nombre" sino que tendría que ser "sinnombre" me gustaría saber como se podría hacer para que acepte los espacios.
Y el segundo, cuando se sube una imagen, se sube sin problemas. Pero si otro cualquier sube otra imagen pero con el mismo nombre, en vez de crear "sinnombre2" la reemplaza y la primera se borra quedando la segunda. La idea es que se cree con otro nombre, o con un numero detrás, para que no se reemplace :P.

Desde ya muchas gracias!
  #2 (permalink)  
Antiguo 25/07/2012, 18:43
 
Fecha de Ingreso: noviembre-2010
Ubicación: Concordia
Mensajes: 95
Antigüedad: 13 años, 4 meses
Puntos: 6
Respuesta: script para subir imagenes

Amigo, te paso mi solución, es un script que no importa el nombre, siempre al subir la imagen la renombra distinto, asi nunca tendras dos nombres iguales ni se sobreescribiran las imagenes

haz un archivo php llamado gestionimagen.php con el siguiente codigo

--------------------------------

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Subir Imagen</title>
</head>

<body>
<?php if ((isset($_POST["enviado"])) && ($_POST["enviado"] == "form1")) {
$archivos_disp_ar = array('jpg', 'jpeg', 'gif', 'png');
$carpeta = '../imagenes/';
$imagen = $_FILES['userfile']['tmp_name'];
$nombrebre_orig = $_FILES['userfile']['name'];
$array_nombre = explode('.',$nombrebre_orig);
$cuenta_arr_nombre = count($array_nombre);
$extension = strtolower($array_nombre[--$cuenta_arr_nombre]);
$nombre_nuevo = time().'_'.rand(0,100).'.'.$extension;
$nombre_nuevo_con_carpeta = $carpeta.$nombre_nuevo;
$mover_archivos = move_uploaded_file($imagen , $nombre_nuevo_con_carpeta);
?>
<script>
opener.document.form1.strImagen.value="<?php echo $nombre_nuevo; ?>"; javascript:self.close();
</script>
<?php
}
else
{?>
<form action="gestionimagen.php" method="post" enctype="multipart/form-data" id="form1">

<p>
<input name="userfile" type="file" />
</p>
<p>
<input type="submit" name="button" id="button" value="Subir Imagen" />
</p>
<input type="hidden" name="enviado" value="form1" />
</form>
<?php }?>
</body>
</html>

---------------------------

esto sera un popup, en la web del formulario para poner la imagen pon apenas abre el <body>

<script>
function subirimagen()
{
self.name = 'opener';
remote = open('gestionimagen.php', 'remote', 'width=400,height=150,location=no,scrollbars=yes,m enubars=no,toolbars=no,resizable=yes,fullscreen=no , status=yes');
remote.focus();
}

</script>

y en el formulario donde va el input para la imagen pon lo siguiente:


<input type="text" name="strImagen" value="" size="20" /><input name="button" type="button" class="tablaprincipal" id="button" onclick="javascript:subirimagen();" value="Subir Imagen" />

ten en cuenta de remplazar strImagen por el nombre del input de que uses

prueba y comentame

saludos
  #3 (permalink)  
Antiguo 25/07/2012, 19:33
 
Fecha de Ingreso: mayo-2011
Mensajes: 19
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: script para subir imagenes

Me tira 2 errores...

Warning: move_uploaded_file(../imagenes/1343266205_48.png) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/a1404809/public_html/gestionimagen.php on line 19

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phps4VZuf' to '../imagenes/1343266205_48.png' in /home/a1404809/public_html/gestionimagen.php on line 19

:/
  #4 (permalink)  
Antiguo 25/07/2012, 19:48
 
Fecha de Ingreso: noviembre-2010
Ubicación: Concordia
Mensajes: 95
Antigüedad: 13 años, 4 meses
Puntos: 6
Respuesta: script para subir imagenes

creaste la carpeta para subir las imagenes? en mi caso es ../imagenes/ sacale los puntos, prueba, funciona a la perfeccion
  #5 (permalink)  
Antiguo 25/07/2012, 20:18
 
Fecha de Ingreso: mayo-2011
Mensajes: 19
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: script para subir imagenes

Me da el mismo error,

Es en esta linea:
$mover_archivos = move_uploaded_file($imagen , $nombre_nuevo_con_carpeta);
  #6 (permalink)  
Antiguo 26/07/2012, 09:12
 
Fecha de Ingreso: noviembre-2010
Ubicación: Concordia
Mensajes: 95
Antigüedad: 13 años, 4 meses
Puntos: 6
Respuesta: script para subir imagenes

pues mucho ya no puedo hacer, pues a mi me funciona barbaro, revisaste que las variables tengan el mismo nombre? la carpeta tiene permisos de escritura? lo haces online o en local?
  #7 (permalink)  
Antiguo 26/07/2012, 12:02
Avatar de p414  
Fecha de Ingreso: agosto-2009
Ubicación: casi casi casi... a un lado de la cuna...
Mensajes: 575
Antigüedad: 14 años, 7 meses
Puntos: 44
Respuesta: script para subir imagenes

oye pereza_2008 y si mejor te pasa las rutas y los archivos q requiere y los datos de acceso a su servidor y tu se lo haces?
__________________
Desde hace tiempo estoy esperandote... bienvenido mi pequeño Diego!!!
  #8 (permalink)  
Antiguo 27/07/2012, 15:52
 
Fecha de Ingreso: mayo-2012
Mensajes: 26
Antigüedad: 11 años, 11 meses
Puntos: 2
Respuesta: script para subir imagenes

Cita:
Iniciado por santi_64 Ver Mensaje
Buenos días, eh aqui un problema y me gustaría saber si tendría solución.
En esta web conseguí un código para subir imágenes. (http://www.forosdelweb.com/wiki/PHP:Manejando_imagenes_al_subirlas_al_servidor)

El script funciona de 10. Pero tengo 2 problemitas..
El primero es que no se puede subir una imagen que de nombre tenga espacios, como por ejemplo "sin nombre" sino que tendría que ser "sinnombre" me gustaría saber como se podría hacer para que acepte los espacios.
Y el segundo, cuando se sube una imagen, se sube sin problemas. Pero si otro cualquier sube otra imagen pero con el mismo nombre, en vez de crear "sinnombre2" la reemplaza y la primera se borra quedando la segunda. La idea es que se cree con otro nombre, o con un numero detrás, para que no se reemplace :P.

Desde ya muchas gracias!
hola santi

lo que puedes hacer es utilizando el mismo codigo del ejemplo de forosdelweb
que se llama ModifiedImage.php

modificandolo un poco con lo que te comentaban anteriormente puedes subir las imagenes que tengan espacios y si tienen el mismo nombre no se sobreescriben.

el ejemplo q te dejo, te redimensiona las imagenes a 200px de alto.

no olvides crear la carpeta images_upload justo donde esta el index.php de subida como el ejemplo q te dejo a continuacion.

ahh si quieres ver la imagen de subida, en el ejemplo cambia el /3333/ por la ruta de tu localhost

como yo lo probe en wamp, lo tenia en esta ubicacion

http://localhost/3333/index.php


el codigo de ModifiedImage.php lo puedes sacar desde (http://www.forosdelweb.com/wiki/PHP:Manejando_imagenes_al_subirlas_al_servidor)

aca el codigo del index.php

Código PHP:
Ver original
  1. <?php
  2. if(!empty($_FILES['image']) && $_FILES['image']['error'] == UPLOAD_ERR_OK) {
  3.     require_once 'ModifiedImage.php';
  4.  
  5.     $image = new ModifiedImage($_FILES['image']['tmp_name']);
  6.  
  7.     if($image->getHeight() > 200){
  8.         $image->resizeToHeight(200);
  9. /////////////////////////////////////////////////////////////
  10.         //seleccionamos la carpeta donde se subiran las imagenes
  11.         $carpeta = 'images_upload/';
  12.         $nombrebre_orig = $_FILES['image']['name'];
  13.         //recibimos el nombre original y lo explotamos, ya sea que tenga espacios o no.
  14.         $array_nombre = explode('.',$nombrebre_orig);
  15.         $cuenta_arr_nombre = count($array_nombre);
  16.         $extension = strtolower($array_nombre[--$cuenta_arr_nombre]);
  17.         //nombre aleatorio, en si numeros
  18.         $nombre_nuevo = time().'_'.rand(0,100).'.'.$extension; 
  19.         //generamos el nombre final
  20.         $h200 = $carpeta.'h200_'.$nombre_nuevo;
  21.         //guardamos la imagen
  22.         $image->save($h200);
  23. /////////////////////////////////////////////////////////////
  24.     }
  25. ?>
  26. Imagen grabada:
  27. <!--  Cambia el /3333/ por la direccion de tu localhost -->
  28. <a href="/3333/<?php echo $h200; ?>">Click para ver la imagen subida</a>
  29. <?php } ?>
  30.  
  31. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
  32.     <input type="file" name="image" />
  33.     <input type="submit" name="submit" value="Upload" />
  34. </form>

espero te sirva, cualquier cosa nos cuentas, saludos.

Etiquetas: imagenes
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 08:59.