![Aplauso](http://static.forosdelweb.com/fdwtheme/images/smilies/aplausos.gif)
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:
Tengo que mostrar una Imagen uso cuatro (04) formularios: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;
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>
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
?>
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");
?>
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);
}
?>
![Neurótico](http://static.forosdelweb.com/fdwtheme/images/smilies/scared.png)