Foros del Web » Programando para Internet » PHP »

upload imagen con formulario

Estas en el tema de upload imagen con formulario en el foro de PHP en Foros del Web. Hola buenas soy muy nuevo en esto de php, he conseguido varias cosas gracias a esta web y a alguno de sus miembros. Yo lo ...
  #1 (permalink)  
Antiguo 03/11/2007, 12:55
 
Fecha de Ingreso: octubre-2007
Mensajes: 53
Antigüedad: 17 años
Puntos: 0
upload imagen con formulario

Hola buenas soy muy nuevo en esto de php, he conseguido varias cosas gracias a esta web y a alguno de sus miembros.

Yo lo que tengo es un formulario en el que voy metiendo los campos, este formulario se conecta a una base de datos, los datos se almacenan en la basde de datos, y se mustran por pantalla.

Hasta ahi todo correcto.

Queria, en ese formulario, poner un campo de una imagen, en la base de atos lo he llamado "caratula".

Queria poder meter una imagen mediante un botonm de examinar (esto lo he conseguido), esta imagen introducirla en la base de datos, por lo que he leido es mejor meter la ruta de la imagen y no la imagen, (esto no se como se puede hacer).

Una vez gusradada la ruta poder mostrar la imagen cuando yo se lo pida, a la par que los demas campos.

Alguien podria hecharme una manuca??
m,uchas garcias de antemano
  #2 (permalink)  
Antiguo 04/11/2007, 01:44
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 9 meses
Puntos: 81
Re: upload imagen con formulario

Para subir imagenes debes tener dos cosas siempre:
Código HTML:
<form action=.... method=... ENCTYPE="multipart/form-data" > 
y que el input donde vayas a subir la img sea asi:
Código HTML:
<INPUT name=... TYPE="file"> 
Ahora... para recoger este tipo de datos en vez de usar $_GET o $_POST debes utilizar:
Código PHP:
$_FILES['nombre_campo']['tmp_name'] = nombre del temporal que se subio
$_FILES
['nombre_campo']['name'] = nombre del archivo 
Para poder subir las imagenes al servidor debes utilizar algo como esto:
Código PHP:
//suponiendo que tu input file se llama archivo:
$nombre "archivo";
$uploaddir $_SERVER[PATHINFO_DIRNAME].'carpeta_donde_la_subiras/';
$uploadfile $uploaddir.$_FILES[$nombre]['name'];
if (
move_uploaded_file($_FILES[$nombre]['tmp_name'], $uploadfile)) {
    
//aqui ya se subio donde tu querias
} else {
    
//existe un error

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 04/11/2007, 02:35
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Re: upload imagen con formulario

Cita:
Iniciado por Marvin Ver Mensaje
Para subir imagenes debes tener dos cosas siempre:
Código HTML:
<form action=.... method=... ENCTYPE="multipart/form-data" > 
...
Aunque hayas puesto esos puntos suspensivos sobre el método, sí o sí debe ser method="post"

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 04/11/2007, 02:42
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 9 meses
Puntos: 81
Re: upload imagen con formulario

Sip... me le fue el detalle
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #5 (permalink)  
Antiguo 04/11/2007, 05:22
 
Fecha de Ingreso: octubre-2007
Mensajes: 53
Antigüedad: 17 años
Puntos: 0
Re: upload imagen con formulario

Vale y una vez subida para insertarla en la base de datos seria haciendo un insert del $_FILE['nombre']?? o seria de otro archivo.

Y para despues mostrarla??

Muchas gracias
  #6 (permalink)  
Antiguo 04/11/2007, 10:51
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Re: upload imagen con formulario

Hola:

Del array $_FILES["nombre"], debes leer el contenido del fichero ["tmp_name"]... pero hay un buen tutorial en este otro mensaje: Tutorial ejemplo: Subir archivos a tu BD (guardando en la BD en binario)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 04/11/2007, 14:20
 
Fecha de Ingreso: octubre-2007
Mensajes: 53
Antigüedad: 17 años
Puntos: 0
Re: upload imagen con formulario

Caricatos, el tutorial que me comentas es para pasar las imagtens a binario y almacenarlas en la propia db.

Pero en mic aso seria almacenar muuuuuuchas fotos, y por lo que he podido leer ese no es el mejor metodo.

Perdonar por la chapa pero es que soy muy nuevo y me cuesta un poco cogerlo.

Gracias
  #8 (permalink)  
Antiguo 05/11/2007, 01:46
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 9 meses
Puntos: 81
Re: upload imagen con formulario

Si utilizaste el script de arriba, debes usar $_FILES['nombre_campo']['name'] para guardarlo a la base de datos ;)

Ese es el nombre final del archivo, el $_FILES['nombre_campo']['tmp_name'] es el temporal que se crea al momento de apretar el submit del formulario.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #9 (permalink)  
Antiguo 05/11/2007, 12:07
 
Fecha de Ingreso: octubre-2007
Mensajes: 53
Antigüedad: 17 años
Puntos: 0
Re: upload imagen con formulario

Vale ya lo voy pillando poco a poco.

Cuando ejecuto el script me sda un warning:

Warning: move_uploaded_file(imagenes/Tejado Jacinta 001.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in E:\Archivo de programas\apache\htdocs\prueba4\subir.php on line 8

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\WINDOWS\Temp\php44.tmp' to 'imagenes/Tejado Jacinta 001.jpg' in E:\Archivo de programas\apache\htdocs\prueba4\subir.php on line 8
error

Me iamgino que haya q poner algo aqui, en donde pone "//aqui ya se subio donde tu quieras".

O es por otra cosa?

Gracias

if (move_uploaded_file($_FILES[$nombre]['tmp_name'], $uploadfile)) {
//aqui ya se subio donde tu querias
} else {
//existe un error
}
  #10 (permalink)  
Antiguo 05/11/2007, 12:18
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 8 meses
Puntos: 17
Re: upload imagen con formulario

La variable $nombre la tenés definida? ahí debería ir el name del campo file que estás utilizando
  #11 (permalink)  
Antiguo 05/11/2007, 12:23
 
Fecha de Ingreso: octubre-2007
Mensajes: 53
Antigüedad: 17 años
Puntos: 0
Re: upload imagen con formulario

Yo tengo esto puesto.

Primero he hecho un html llamado formulario que tiene esto:

<FORM enctype="multipart/form-data" method="post" action="subir.php">
Archivo: <INPUT type="file" name="archivo" size="30">
<INPUT type="submit" name="submit" value="Subir archivo">
</FORM>

Con esto le doy a examinar y selecciono la imagen y despues le doy a Subir archivo.

Despues tengo hecho la subir.php que tiene esto:

<?php
$_FILES['nombre_campo']['tmp_name'];
$_FILES['nombre_campo']['name'];
//suponiendo que tu input file se llama archivo:
$nombre = "archivo";
$uploaddir = $_SERVER[PATHINFO_DIRNAME].'imagenes/';
$uploadfile = $uploaddir.$_FILES[$nombre]['name'];
if (move_uploaded_file($_FILES[$nombre]['tmp_name'], $uploadfile)) {
//aqui ya se subio donde tu querias
} else {
echo "error";
//existe un error
}

Supuestamente tengo declarado la variable $nombre = "archivo" que es como sellama el input, no es asi?

Gracias
  #12 (permalink)  
Antiguo 05/11/2007, 12:23
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 18 años, 5 meses
Puntos: 3
Re: upload imagen con formulario

Tienes que poner qué es lo que quieres que haga si se ha subido bien el fichero; por ejemplo:

Código PHP:
if (move_uploaded_file($_FILES[$nombre]['tmp_name'], $uploadfile)) {
    echo 
'El fichero se ha subido correctamente';
    exit;
    }
}
else{
    echo 
'Ha habido un problema con la subida del fichero.';
    exit;

Saludos
  #13 (permalink)  
Antiguo 05/11/2007, 12:26
 
Fecha de Ingreso: octubre-2007
Mensajes: 53
Antigüedad: 17 años
Puntos: 0
Re: upload imagen con formulario

Aunque ponga eso como me dices Anastasiaphp, me sigue diciendo lo mismo, me da el mismo warning.

Alguna idea??

Gracias a todos
  #14 (permalink)  
Antiguo 05/11/2007, 12:30
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 9 meses
Puntos: 81
Re: upload imagen con formulario

Ok... fijate si tienes la carpeta imagenes en:
E:\Archivo de programas\apache\htdocs\prueba4\

Segun el warning no tienes una carpeta llamada asi.

Y el otro error es consecuencia del primero.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #15 (permalink)  
Antiguo 05/11/2007, 12:35
 
Fecha de Ingreso: octubre-2007
Mensajes: 53
Antigüedad: 17 años
Puntos: 0
Re: upload imagen con formulario

Si era eso, justo lo hbia arreglao he visto tu post, muchas gracias.

Bueno y ahora toca meter "eso" en la db no?

Tengo que hacer un insert de este archivo no?'

$_FILES['nombre_campo']['name'].

Y despues mara mostrarlo que tiene que hacerse con esto??

<img src="<?php echo "$_FILES['nombre_campo']['name'] ?>">

Por ciwerto una vez hecho esto habra forma de cambiar el nombre de la foto para que fuera IMG_id

id el id de la db

Gracias
  #16 (permalink)  
Antiguo 05/11/2007, 13:00
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 9 meses
Puntos: 81
Re: upload imagen con formulario

Para poder mostrarlo traes el campo que guardaras en la base de datos como una variable mas.

Para cambiar el nombre de la foto, lo mas utilizado es agregarle la fecha/hora al principio del nombre.

Recuerdas que para el nombre de la foto utilizamos esto:
Código PHP:
$uploadfile $uploaddir.$_FILES[$nombre]['name']; 
Bueno... lo que puedes hacer es poner esto:
Código PHP:
$hora date("dmY_His");
$uploadfile $uploaddir.$hora."_".$_FILES[$nombre]['name']; 
Asi cuando suban la foto, va a quedar algo como: fecha_hora_nombreimagen

Debes recordar que para guardar esto debes tomar estos mismos datos.
Por ejemplo:
Código PHP:
//variable para fecha hora
$hora date("dmY_His");
//variable para guardar el nombre que le hemos dado a nuestro archivo
$archivoParaDB $hora."_".$_FILES[$nombre]['name'];
$uploadfile $uploaddir.$archivoParaDB
;) Suerte
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #17 (permalink)  
Antiguo 05/11/2007, 13:03
 
Fecha de Ingreso: octubre-2007
Mensajes: 53
Antigüedad: 17 años
Puntos: 0
Re: upload imagen con formulario

Ok muchas gracias, voy a probar y te cuento.

Muchas gracias
  #18 (permalink)  
Antiguo 05/11/2007, 13:25
 
Fecha de Ingreso: octubre-2007
Mensajes: 53
Antigüedad: 17 años
Puntos: 0
Re: upload imagen con formulario

Wueno, ya he avanzado, poco pero bueno jejeejeje

Ya he copnseguido meter la ruta de la imagen en la db.

Ahora el problema lo tengo al mostarra la imagen.

Si quiero mostarrala pongo esto:

<form>
<img src="<?php echo $row["$imagen"]; ?>">
</form>

Pero en el browser siempre me saca el simbolo de la imagen rota, como si no al encontrara.

Esta mal puesto para que la muestre??
Gracias
  #19 (permalink)  
Antiguo 05/11/2007, 20:26
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 9 meses
Puntos: 81
Re: upload imagen con formulario

Debes tener en cuenta la ruta de la pagina en donde tienes el formulario y en donde tienes tu foto.

Si tu pagina esta en E:\Archivo de programas\apache\htdocs\prueba4\ debes poner esta etiqueta:
Código PHP:
<img src="imagenes/<?php echo $row["$imagen"]; ?>">
O ponla relativa
Código PHP:
<img src="/prueba4/imagenes/<?php echo $row["$imagen"]; ?>">
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #20 (permalink)  
Antiguo 06/11/2007, 07:43
 
Fecha de Ingreso: octubre-2007
Mensajes: 53
Antigüedad: 17 años
Puntos: 0
Re: upload imagen con formulario

Si pongo lo que me comentas me sigue apareciendo el simbolo de la imagen rota, si le doy a boton derecho ver imagen me aparece una lista con las imagenes que tengo en ese directorio.

El problema debe estar en el $row["imagen"] o algo asi.

imagen es el nombre del campo de la db.

Seria asi??

O habrai que hacerlo de otra forma.

Muchas gracias
  #21 (permalink)  
Antiguo 06/11/2007, 07:53
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 18 años, 5 meses
Puntos: 3
Re: upload imagen con formulario

Parece que falta una parte.

Si el nombre de la imagen en la BD se llama 'imagen', y supongo que no tiene en el nombre la extensión jpg o png o lo que hayas puesto, pues debería ser algo así:

Código PHP:
<img src="imagenes/<?php echo $row["imagen"]; ?>.jpg">
Saludos
  #22 (permalink)  
Antiguo 06/11/2007, 07:57
 
Fecha de Ingreso: octubre-2007
Mensajes: 53
Antigüedad: 17 años
Puntos: 0
Re: upload imagen con formulario

Pues si era eso, fijate lo que un $ mal puesto puede hacer, jejejejeje. uchas gracias a todos.

Otra cosa, me gustaria poder hacer que cualquier imagen que se suba, antes de gusradarla la redimensione.

Es decir, cuando la voy a meter en la db ya la meto redimensionada, he visto variso ejemplos pero nada claro.

Si podeis hehcrame una manuca os lo agarddeceria.

Muchas gracias de nuevo por todo
  #23 (permalink)  
Antiguo 06/11/2007, 08:23
Avatar de jorjo  
Fecha de Ingreso: abril-2007
Ubicación: España
Mensajes: 90
Antigüedad: 17 años, 6 meses
Puntos: 1
Re: upload imagen con formulario

Hola, aprovecho este post para exponer mi problema, a mí me de este error:

Warning: move_uploaded_file(../images/galeria/20071106124200_foto.jpg): failed to open stream: Permission denied in C:\CubeWebs\inetpub\domains\web.com\home\html\func iones.php on line 1519

Warning: move_uploaded_file(): Unable to move 'C:\cube\tmp\uploads\php2E8.tmp' to '../images/galeria/20071106124200_foto.jpg' in C:\CubeWebs\inetpub\domains\web.com\home\html\func iones.php on line 1519

Es un problema de permisos? ya que no puedo cambiar los permisos en el servidor en cuestion, ya que no me deja...

Espero que me puedan ayudar.

Un saludo
  #24 (permalink)  
Antiguo 06/11/2007, 15:29
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 9 meses
Puntos: 81
Re: upload imagen con formulario

Sip... es un problema de permisos.

Siempre que tengas muchos warning, empieza a traducir desde arriba hacia abajo.

Por lo gral. el primero es el que te trae el error, y el segundo y tercero y etc... pueden ser a causa del primero o un error distinto.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #25 (permalink)  
Antiguo 06/11/2007, 18:21
 
Fecha de Ingreso: julio-2004
Mensajes: 51
Antigüedad: 20 años, 4 meses
Puntos: 0
Re: upload imagen con formulario

Tengo una consulta, si quisiera renombrar el archivo con otro nombre a traves de otro campo o sea,

Este seria el nombre nuevo:
<input type="text" name="nombre" />

Y con este se subiria el archivo:
<input type="file" name="archivo">

Desde ya muchas gracias
Un saludo
Nicolas
  #26 (permalink)  
Antiguo 07/11/2007, 17:49
 
Fecha de Ingreso: julio-2004
Mensajes: 51
Antigüedad: 20 años, 4 meses
Puntos: 0
Re: upload imagen con formulario

Podria ser utilizando la funcion rename()

HELP!!

Un saludo!
Nicolas
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:47.