Ver Mensaje Individual
  #444 (permalink)  
Antiguo 03/04/2009, 13:36
logos06
 
Fecha de Ingreso: mayo-2006
Mensajes: 1
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: Tutorial ejemplo: Subir archivos a tu BD (guardando en la BD en binario)

Que tal? Tengo un problema al querer hacer funcionar este script. Soy novato en esto y el tema es que no me aparecen las imagenes cuando me abre el archivo "listar_imagenes.php". Aparece el icono de error en la carga de la imagen. Los datos de texto aparecen todos bien.

Les adjunto el codigo para que sepan mas o menos de qué les estoy hablando.

Codigo PHP

insertar.php

Código PHP:
<?php
//Primero, arranca el bloque PHP y checkea si el archivo tiene nombre.  Si no fue asi, te remite de nuevo al formulario de inserción:
// No se comprueba aqui si se ha subido correctamente.
if (empty($_FILES['imagen']['name'])){
header("location: formulario.php?proceso=falta_indicar_fichero"); //o como se llame el formulario ..
exit;
}

//establece una conexión con la base de datos.
$conexion mysql_connect("localhost","user","password") or die ("no se ha podido conectar a la BD");
mysql_select_db("catalogo",$conexion) or die("No se puede seleccionar BD"); // tu_bd es el nombre de la Base de datos .. por siaca.

// archivo temporal (ruta y nombre).
$binario_nombre_temporal=$_FILES['imagen']['tmp_name'] ;
$Fcodigo=$_REQUEST['codigo'];
$Fmarca=$_REQUEST['marca'];
$Fmodelo=$_REQUEST['modelo'];
$Fmoneda=$_REQUEST['moneda'];
$Fvalor=$_REQUEST['valor'];

// leer del archvio temporal .. el binario subido.
// "rb" para Windows .. Linux parece q con "r" sobra ...
$binario_contenido addslashes(fread(fopen($binario_nombre_temporal"r"), filesize($binario_nombre_temporal)));

// Obtener del array FILES (superglobal) los datos del binario .. nombre, tabamo y tipo.
$binario_nombre=$_FILES['imagen']['name'];
$binario_peso=$_FILES['imagen']['size'];
$binario_tipo=$_FILES['imagen']['type'];

//insertamos los datos en la BD.
$consulta_insertar "INSERT INTO producto (id, img_binario, img_nombre, img_peso, img_tipo, codigo, marca, modelo, moneda, precio) VALUES ('', '$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo', '$Fcodigo', '$Fmarca', '$Fmodelo', '$Fmoneda', '$Fprecio')";
mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos.");
header("location: listar_imagenes.php");  // si ha ido todo bien
exit;
?>
listar_imagenes.php

Código PHP:
<?php
    mysql_connect
("localhost","user","password") or die ("no se ha podido conectar a la BD");

    
mysql_select_db("catalogo") or die ("no se ha podido seleccionar la BD");

    
$sql "SELECT img_binario,img_nombre,img_peso,img_tipo,codigo,marca,modelo,moneda,precio FROM producto";
    
$consulta mysql_query($sql) or die ("No se pudo ejecutar la consulta");

    While (
$registro=mysql_fetch_assoc($consulta)){
        echo 
"<img src=\"ver.php?id=".$registro['id']."\">";
        echo 
"<br> Nombre archivo: ".$registro['img_nombre'];
        echo 
"<br> Tipo archivo (MIME formato): ".$registro['img_tipo'];
        echo 
"<br> Peso: ".$registro['img_peso']." bytes.<br>";
        echo 
"<br> Codigo: ".$registro['codigo']."<br>";
        echo 
"<br> Marca: ".$registro['marca']."<br>";
        echo 
"<br> Modelo: ".$registro['modelo']."<br>";                
        echo 
"<br> Moneda: ".$registro['moneda']."<br>";                        
        echo 
"<br> Precio: ".$registro['precio']."<br>";                                
    }

?>
ver.php

Código PHP:
<?php
if(isset($_GET['id'])) {

    
// you may have to modify login information for your database server:
    
$conexion=mysql_connect("localhost","user","password") or die ("no se ha podido conectar a la BD");

    
mysql_select_db("catalogo") or die ("no se ha podido seleccionar la BD");

    
$sql "SELECT img_binario,img_nombre,img_peso,img_tipo,codigo,marca,modelo,moneda,precio FROM producto WHERE id='".$_GET['id']."'";

    
$consulta mysql_query($sql,$conexion);

    
$datos mysql_result($consulta,0,"img_binario");
    
$tipo mysql_result($consulta,0,"img_tipo");
    
$nombre mysql_result($consulta,0,"img_nombre");
    
$peso mysql_result($consulta,0,"img_peso");

    
header("Content-type: $tipo");
    
header("Content-length: $peso"); 
    
header("Content-Disposition: inline; filename=$nombre"); 
 
   echo 
$datos;

}
?>

Agradezco mucho su ayuda, saludos!!

Gabriel