Foros del Web » Programando para Internet » PHP »

pesadilla guardar leer imagenes

Estas en el tema de pesadilla guardar leer imagenes en el foro de PHP en Foros del Web. Hola a todos Se que es un tema muy visto pero he mirado varios tutoriales y no llego a entenderlo Quiero simplemente guardar una imagen ...
  #1 (permalink)  
Antiguo 01/10/2009, 07:33
Avatar de JOSANCIN  
Fecha de Ingreso: septiembre-2008
Ubicación: huesca
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 0
pesadilla guardar leer imagenes

Hola a todos
Se que es un tema muy visto pero he mirado varios tutoriales y no llego a entenderlo
Quiero simplemente guardar una imagen en jpg en una tabla y leerla
Os agradeceria si me pudieseis remitir a un script que lo hiciera de la forma mas sencilla posible
o un tutorial sencillo
Llevo varios dias y no me aclaro

Gracias a todos y que vaya bien
  #2 (permalink)  
Antiguo 01/10/2009, 07:38
 
Fecha de Ingreso: octubre-2008
Mensajes: 365
Antigüedad: 15 años, 6 meses
Puntos: 12
Respuesta: pesadilla guardar leer imagenes

Quizas no convendría que guardes la imagen en tu tabla; podrías solamente guardar la dirección a la imagen en tu tabla y desde código generas la imagen.

Salu2
  #3 (permalink)  
Antiguo 01/10/2009, 07:44
Avatar de JOSANCIN  
Fecha de Ingreso: septiembre-2008
Ubicación: huesca
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: pesadilla guardar leer imagenes

lo que sea mas facil, si me puedes indicar como hacerlo de esa forma genial
gracias
  #4 (permalink)  
Antiguo 01/10/2009, 07:55
Avatar de chulifo  
Fecha de Ingreso: abril-2009
Ubicación: perdido en codigos del PHP, pero aprendo rapido!
Mensajes: 524
Antigüedad: 15 años
Puntos: 18
Respuesta: pesadilla guardar leer imagenes

Cita:
Iniciado por JOSANCIN Ver Mensaje
lo que sea mas facil, si me puedes indicar como hacerlo de esa forma genial
gracias
bueno creo q seria algo dificil "guardar" una imagen en si en a base de datos.

lo mejor sera que cuando uses un upload o tu mismo hagas un insert a la base de datos con la direccion exacta de la imagen
__________________
Solo soy un simple fanático que mata el tiempo de la mejor manera.
  #5 (permalink)  
Antiguo 01/10/2009, 08:01
 
Fecha de Ingreso: junio-2006
Mensajes: 166
Antigüedad: 17 años, 10 meses
Puntos: 3
Respuesta: pesadilla guardar leer imagenes

yo te muestro como guardar los archivos en una carpeta y la ruta en la base de datos:
supuestamente subis los archivos a traves de un formulario...

el" name" de la etiqueta content type upload es "archivo".

en el script pho extraemos estos datos, seguramente a esto ya lo has visto

$archivo=$_FILES['archivo']['tmp_name'];//contenido del archivo
$nomimagen=$_FILES['archivo']['name'];//nombre
$tipo=$_FILES['archivo']['type'];//tipo
$tamimagen=$_FILES['archivo']['size'];//tamaño

if (is_uploaded_file($_FILES['archivo']['tmp_name'])) {
copy($_FILES['archivo']['tmp_name'], 'C:/Archivos de programa/xampp/htdocs/VT/prueba/cocina/'.$_FILES['archivo']['name'].'');
$subido = true;
$ruta= "C:/Archivos de programa/xampp/htdocs/VT/prueba/cocina/"; //este es mi ejemplo

if($subido <> true) {
echo "<p>Error al subir el archivo</p>";
} else {
mysql_query("INSERT INTO nombrecolumna values
papapapapa , '$ruta') ");
echo '<h2><font color=white><b>Libro registrado con éxito</b> </font></h2>';

}}

y si queres otro script para verlo:
if(file_exists("C:\\Archivos de programa\\xampp\\htdocs\\VT\\prueba\\cocina\\".$no mfoto."")) // en este caso lo busque por el nombre de la foto pero lo podes buscar por la ruta tambien
{
$foto = '<IMG SRC="/VT/prueba/cocina/'.$nomfoto.'">';

}
else {
$foto="imagen no disponible";
}

recorda que las rutas para hallar el archivo deben ser modificadas, ya que cuando subas el sitio web al servidor te va a cambiar todo...
  #6 (permalink)  
Antiguo 01/10/2009, 08:10
Avatar de pepeverastegui  
Fecha de Ingreso: septiembre-2008
Ubicación: Pedernales, Michoacan
Mensajes: 82
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: pesadilla guardar leer imagenes

ps tiene razon chulifo es mejor tu guardar tu imagen o archivo en una ubicacion donde tu lo posiciones y unicamente en la base de datos guardes:
el nombre del archivo
la ubicacion
el tipo de header
el tamaño

para que despues recupoeres la info y muestras el dato.

mira asi lo tengo yo.

Código PHP:
// SI SE ENVIO EL ARCHIVO DEL FORMULARIO
if(is_uploaded_file($_FILES["art_imagen"]["tmp_name"]))
                  {
                     
$nombreimg "";
                     
// SI EL ARCHIVO PESA MENOS DE 100KILOBYTES
                     
if($_FILES["art_imagen"]["size"] < 102400)
                     {
                        
$archivo    $_FILES["art_imagen"]["tmp_name"]; 
                        
$tamanio    $_FILES["art_imagen"]["size"];
                        
$tipo       $_FILES["art_imagen"]["type"];
                        
$nombreimg  $_FILES["art_imagen"]["name"];
                          
// SI EL ARCHIVO ES IMAGEN JPG, GIF, BMP O PNG
                          
if($ext_arch == "jpg" || $ext_arch == "gif" || $ext_arch == "bmp" || $ext_arch == "png")
                         {
                               
// SI NO ES EJECUTABLE (VIRUS O QUE SE YO)
                               
if(!(is_executable($nombreimg)))
                              {
                                 
// SI CUMPLE CON TODO SE INSERTA A LA BDD
                                  
$direccion "/tucarpeta/" $nombreimg;

                                  
mysql_query("INSERT INTO imagen ('$direccion', '$nombreimg', '$tamanio', '$tipo')");

                                 
copy($_FILES['art_imagen']['tmp_name'], $direccion);

                               }
                         } 
                   }  
                } 
__________________
Ing. Jesus Verastegui
http://www.micharanga.com.mx
http://pepeverastegui.blogspot.com

Última edición por pepeverastegui; 01/10/2009 a las 08:22 Razón: hace un momento me equivoque de pagina y puse el codigo de otra
  #7 (permalink)  
Antiguo 01/10/2009, 08:55
 
Fecha de Ingreso: octubre-2008
Mensajes: 365
Antigüedad: 15 años, 6 meses
Puntos: 12
Respuesta: pesadilla guardar leer imagenes

Código:
lo que sea mas facil, si me puedes indicar como hacerlo de esa forma genial
gracias
Ceo que todos concordamos que guardar la ruta a la imagen es una buena opción; entonces solo aclarando la idea es la siguiente:

1.- Usas algún script de los que ya están arriba haciendo un upload de la imagen a una carpeta específica en el servidor ej. images/imagencualquiera.jpg

2.- En uno de los campos de la tabla que corresponda guardas la ruta a la imagen ej. una tabla que tiene los siguientes campos:

tabla(id_tabla, titulo, descripcion, ruta_imagen)

ruta_imagen debe contener "images/imagencualquiera.jpg"

3.- para mostrar la imagen desde html; ej.

Código HTML:
<img width="200" height="150" src="<?php echo $ruta_imagen; ?>" align="left"/> 
$ruta_imagen lo recuperas de la BD

Espero ayude

Salu2
  #8 (permalink)  
Antiguo 01/10/2009, 09:00
Avatar de JOSANCIN  
Fecha de Ingreso: septiembre-2008
Ubicación: huesca
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: pesadilla guardar leer imagenes

gracias a todos, me parece mas intuitivo que lo de meter la imagen la bd, a ver si lo miro bien y consigo entenderlo!
tengo un script que funciona pero me gustaria entenderlo bien
lo dicho, muchas gracias
  #9 (permalink)  
Antiguo 01/10/2009, 09:13
 
Fecha de Ingreso: octubre-2008
Mensajes: 365
Antigüedad: 15 años, 6 meses
Puntos: 12
Respuesta: pesadilla guardar leer imagenes

Bueno; pero insisto en que la opción de guardar la ruta es el mejor camino debieras reconsiderarlo.

Salu2
  #10 (permalink)  
Antiguo 01/10/2009, 09:47
Avatar de pepeverastegui  
Fecha de Ingreso: septiembre-2008
Ubicación: Pedernales, Michoacan
Mensajes: 82
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: pesadilla guardar leer imagenes

Cita:
Iniciado por JOSANCIN Ver Mensaje
gracias a todos, me parece mas intuitivo que lo de meter la imagen la bd, a ver si lo miro bien y consigo entenderlo!
tengo un script que funciona pero me gustaria entenderlo bien
lo dicho, muchas gracias
puedes hacerlo de las dos maneras:

1) creando tu los archivos en la ubicacion que quieras y metiendo unicamente la informaicon edl archivo en le base de datos

2) metiendo el archivo completo en la base de datos junto con su informacion (pero esto implica que la base de datos se va a saturar demasiado telo digo por experiencia ya lo hice y nel, la base de datos me llego a pesar como 800mb de puros archvos pero ps bueno como veas ahi te hecho la mano

y aqui esta el archivo donde cargas la imagen a un campo LONGBLOB de mysql

archivo1.php
Código PHP:
<?php
$db 
mysql_connect("localhost""usuario""password");
mysql_select_db("test");

if(
$b1)
{
   if(
is_uploaded_file($_FILES[archivo][tmp_name]))
   {
      
$tamanio $_FILES[archivo][size];
      
$tipo    $_FILES[archivo][type];
      
$nombre  $_FILES[archivo][name];

      
$archivo fopen($_FILES[archivo][tmp_name], "r");
      
$datos base64_encode(fread($archivo$tamanio));

      
mysql_query("INSERT INTO tabla VALUES('$nombre', '$tipo', '$tamanio', '$datos')");
   }
}
?>

<html>
<head>
<title>Carga Archivos</title>
</head>

<body onload="if(document.f1.archivo){document.f1.archivo.focus();}">

<form name=f1 method=post action=archivo.php enctype="multipart/form-data">
<input type=file name=archivo><br>
<input type=submit name=b1 value="Cargar Archivo">
</form>

</body>
</html>
archivo2.php
Código PHP:
<?php
$db 
mysql_connect("localhost""root""verastegui");
mysql_select_db("test");

$res mysql_query("SELECT * FROM tabla ORDER BY RAND() LIMIT 1");

$row mysql_fetch_object($res);

header("Content-type: $row->tipo");
header("Content-Length: $row->tamanio);

$imagen = base64_decode($row->archivo);

print $imagen;
?>
ahi esta uno para guardar la imagen en un blob y el otro para obtenerla ya en base al codigo pasado que te di, ps ya tu checas que el archivo no sea tan grande y que solo sea jpg espero sirva
__________________
Ing. Jesus Verastegui
http://www.micharanga.com.mx
http://pepeverastegui.blogspot.com
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:45.