Hola amigos del foro, antes darles las gracias a todos aquellos que se toman un poco de su tiempo para leer las dudas de muchos de nosotros y ayudarnos en darles solucion
Stoy probando de manera local este proyecto uso S.O. Win XP, tengo instalado el Appserv 2.59 y PostgreSQl 8.2
Al revisar mi BD veo que si inserta el archivo de tipo imagen pero cuando acceso al List_Image.php la imagen no se puede ver en su lugar hay una "X", este codigo lo use en MySQL y funciona de maravilla pero al pasar este mismo codigo a postgres no visualizo mis imagenes aqui esta todos los archivos que utilizo
Esta es la estructura de mi tabla Archivo:
Código:
Create table ARCHIVO
(
codigo_archivo integer NOT NULL,
archivo_nombre character varying(255),
archivo_peso character varying(50),
archivo_tipo character varying(20),
archivo_bytea Bytea,
primary key (codigo_archivo)
) Without Oids;
Tengo que mostrar una Imagen uso cuatro (04) formularios:
Form.html aqui ingreso la imagen a subir a la BD
Código HTML:
<html>
<head>
<title>Documento sin título</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<table width="600" border="0" cellpadding="3" cellspacing="1" align="center">
<FORM enctype="multipart/form-data" method="post" action="Insert.php" name="form1" onSubmit="return validar(this)">
<tr>
<td colspan=2><p><strong>Imagen:</strong>
<input type="file" name="archivo" size="30" style="border: 1px solid #7F9DB7;">
<input type="submit" value="Subir Imagen" name="enviar">
</tr>
</form>
</table>
</body>
</html>
Insert.php aqui el codigo que realiza el insertado a la BD
Código PHP:
<?php
//establece una conexión con la base de datos.
include("Conexion.php");
// archivo temporal (ruta y nombre).
$tmp_name = $_FILES["archivo"]["tmp_name"];
// Obtener del array FILES (superglobal) los datos del binario .. nombre, tabamo y tipo.
$type = $_FILES["archivo"]["type"];
$size = $_FILES["archivo"]["size"];
$nombre = basename($_FILES["archivo"]["name"]);
// leer del archvio temporal .. el binario subido.
// "rb" para Windows .. Linux parece q con "r" sobra ...
$fp = fopen($tmp_name, "rb");
$buffer = fread($fp, filesize($tmp_name));
fclose($fp);
$buffer=addslashes($buffer);//pg_escape_bytea($buffer);
//Archivo Max Codigo
$query_arch=pg_exec($dbh,"SELECT Max(codigo_archivo) AS arch FROM archivo") or die ("Error SQL Archivo");
$data_arch=pg_fetch_array($query_arch);
$max_arch=$data_arch[arch];
$maxi_arch=$max_arch+1;
//insertamos los datos en la BD.
$sql = "INSERT INTO archivo VALUES ('$maxi_arch', '$nombre', '$size', '$type', '$buffer')";
pg_exec($dbh,$sql) or die ("No se pudo insertar los datos en la base de datos.");
include("close_conexion.php");
header("location: List_Image.php"); // si ha ido todo bien
?>
List_Image.php aqui deberia de mostrar la Imagen que esta insertada en la BD pero me muestra una "X"
Código PHP:
<?php
include("conexion.php");
$sql = "select max(codigo_archivo) from archivo";
$stat = pg_exec($dbh,$sql) or die ("No se pudo ejecutar la consulta");
$row=pg_fetch_row($stat);
echo "<img src='View_Thumbnail.php?codigo_archivo=".$row[0]."'>";
echo "<table>
<tr>
<td><a href='NewFC_Oseo.php'>.::Regresar::.</a> </td>
<td><a href='DeleteImage.php?id=$row[0]'><img src='images/b_drop.png' title='Elimina Imagen' border='0' height='16' hspace='2' width='16'></a> </td>
</tr>
</table>";
include("close_conexion.php");
?>
View_Thumbnail.php este archivo es llamado por List_Image.php deberia de crear una miniatura de la imagen
Código PHP:
<?php
// OJO, sólo funciona con imagnes en formato JPEG ...
if(isset($_GET['codigo_archivo'])) {
include("Conexion.php");
$sql = "SELECT * FROM archivo WHERE codigo_archivo='".$_GET['codigo_archivo']."'";
$stat = pg_exec($dbh,$sql) or die ("No se puede mostrar Thumb");
$imagen = pg_result($stat,0,"archivo_bytea");
// Envio cabeceras al navegador .. se indica que lo "que vá" es una imagen de formato MIME JPEG
Header ("Content-type: image/jpeg");
// Generar el thumbnail:
// Se crea la imagen desde el campo binario de la BD
$img = imagecreatefromstring($imagen);
// Tamaño del Thumbanil (de la imagen a generar ..)
$picsize = 100;
// Se obtienen los datos del ancho y alto de la imagen.
$new_w = imagesx($img);
$new_h = imagesy($img);
// Se calcula la relación alto/ancho
$aspect_ratio = $new_h / $new_w;
// Se ajusta al nuevo tamaño
$new_w = $picsize;
$new_h = abs($new_w * $aspect_ratio);
//Si usan GD version 1.x en adelante
// Se crea la mascara de la imagen nueva
$dst_img = imagecreate($new_w,$new_h);
// Se copia y reajusta el nuevo tamaño en la nueva imagen.
// imagecopyresized($dst_img,$img,0,0,0,0,$new_w,$new_h,imagesx($img),imagesy($img));
//Si usan GD versión 2.x pueden sustituir el código de estos bloques por:
// Se crea la mascara de la imagen nueva
$dst_img = ImageCreateTrueColor($new_w,$new_h);
// Se copia y reajusta el nuevo tamaño en la nueva imagen.
imagecopyresampled($dst_img,$img,0,0,0,0,$new_w,$new_h,imagesx($img),imagesy($img));
// Se entrega al buffer de salida (navegador en este caso) la imagen en formato JPEG
// El tercer parámetro (100) indica la calidad de la imagen: en porcentaje relación calidad/peso imagen.
imagejpeg($dst_img,'',100);
}
?>
Por que no me muestra la imagen

ayudenme a solucionar esto porfa gracias