Categoría: Códigos PHP
Como subir una imágen mediante un formulario en php
Funciona de la siguiente manera, con mi código subo un archivo via input_file en una forma y este se guarda automaticamente en el archivo \\tmp del directorio de php del servidor, solamente mientras corres el codigo, porque despues el mismo servidor lo borra (por seguridad) cuando termina el código; a este archivo le da un nombre temporal, asi que con codigo lo copio a mi directorio del sitio y le cambio el nombre.
Esta es la forma:
<form action=<?php echo$PHP_SELF ?> method=post enctype=multipart/form-data name=ubicaform2 id=ubicaform2>
<input name=addubica type=submit id=addubica value=subir imagen>
Imagen: <input name=upimagen type=file id=upimagen>
</form>
Si te das cuenta, envio la forma a la misma pagina PHP pero esto lo puedes cambiar dirigiéndolo a otra pagina que procese la inserción a la base de datos, lo que si debes tomar mucho en cuenta, al menos para imágenes es el enctype=multipart/form-data
Luego, al principio de mi pagina (o en la pagina a donde es dirigida la forma) pones esto:
if (isset ($addubica)) {
print $upimagen = upimagen ;
print $upimagen_name = upimagen_name ;
print $upimagen_type = upimagen_type ;
print $upimagen_size = upimagen_size ;
$newimage = sprintf (imagenes/%s, $upimagen_name);
move_uploaded_file($upimagen, $newimage);
mysql_select_db($database_travconn, $travconn);
$sql = INSERT INTO ubicacion (imagen) VALUES ('$newimage');
$result = mysql_query($sql);
}
Asi entra el registro en la base de datos haciendo referencia a la imagen que quedó en mi subdirectorio imagenes.
Las cuatro lineas 'print' solo estan para confirmar el nombre de la imagen original, el nombre que queda, el tipo y el tamaño de la imagen, ya que lo hayas probado, puedes borrar estas lineas o comentarlas con //
Asi, al tope de la página resultante en el browser aparecería algo asi:
jtix25s.tmp=upimagen mi_imagen.gif=upimagen_name jpeg/gif=upimagen_type 2654=upimagen_size
Nota : ciertas veces despues del nombre temporal de la imagen te puede salir un warning diciendo que no se puede crear la imagen y no se puede mover al directorio, esto se debe a los permisos que tienes en el directorio \\tmp
Por último en la página donde quieras que se abra el archivo solo lo llamas con el nombre que le diste, sacándolo de la base de datos, en mi caso sería:
<img src=<?php echo $row_Ubicacion['imagen']; ?>>
que me da como resultado imagen/mi_imagen.gif
aunque el archivo de la imagen ya esta fisicamente en el subdirectorio imagen con la base de datos solo asigno el source, es decir, en este caso el archivo de la imagen queda guardado en el subdirectorio imagenes/ de mi site, y en el campo 'imagen' de mi base de datos queda solo el path imagenes/mi_imagen.gif.

.
Para MySQL
Ej:
En este caso concretamente, solo almacenamos texto, asi que valdria un simple VARCHAR(100)
En el caso de almacenar la foto en base de datos
utilizariamos LONGBLOB NOT NULL

Dijo:
anonimo
.
Para MySQL
Ej:
`imagen` LONGBLOB NOT NULL

Dijo:
anonimo
.
Este que tipo de dato es la columna en la base de datos?

Dijo:
Rene