Mostrar una Imagen guardada en Binario
Cuando guardo una imagen en mi BD, lo hace en binario pero al leerla no me la muestra completa ¿A qué se deberá eso? Y he puesto varias imágenes y algunas si las pone completas y otras a la mitad o menos, he visto también las dimensiones de estas y solo las de 500x500 las despliega bien en la ventana pero las que pasan de esas dimensiones me las deja a la mitad.
Acá te dejo mi código por si tienes tiempo de chequear que estoy haciendo mal pues nunca he programado en PHP ni JavaScript.
--------------------------------------------------------------------------------------
$folio_venta = $_POST['folio'];
$articulos = $_POST['folio'];
$tipo_cobro = $_POST['tipo_cobro'];
$sucursal = $_POST['sucursal'];
$fecha_pago = $_POST['date'];
$monto = $_POST['monto'];
$comprobante = $_POST['folio'];
$foto_name= $_FILES['foto']['name'];
$foto_size= $_FILES['foto']['size'];
$foto_type= $_FILES['foto']['type'];
$foto_temporal= $_FILES['foto']['tmp_name'];
$lim_tamano= $_POST['lim_tamano'];
$foto_titulo= $_POST['titulo'];
$foto_id= $_POST['folio'];
# Limitamos los formatos de imagen admitidos a: png, jpg y gif
if ($foto_type=="image/x-png" OR $foto_type=="image/png")
{
$extension="image/png";
}
if ($foto_type=="image/pjpeg" OR $foto_type=="image/jpeg")
{
$extension="image/jpeg";
}
if ($foto_type=="image/gif" OR $foto_type=="image/gif")
{
$extension="image/gif";
}
/*Condicionamos el INSERT para que la foto tenga nombre,
un tamaño distinto de cero y menor que el límite
y que la variable extensión no sea null*/
if ($foto_name != "" AND $foto_size != 0 AND $foto_titulo !='' AND $foto_size<=$lim_tamano AND $extension !='')
{
/*Reconversion de la imagen para meter en la tabla
abrimos el fichero temporal en modo
lectura "r" y binaria "b"*/
$f1= fopen($foto_temporal,"rb");
# Leemos el fichero completo limitando la lectura al tamaño del fichero
$foto_reconvertida = fread($f1, $foto_size);
/* Anteponemos "\" a las comillas que pudiera contener el fichero
para evitar que sean interpretadas como final de cadena.*/
$foto_reconvertida=addslashes($foto_reconvertida);
/* Abrimos la base de datos y escribimos las intrucciones para Insertar y
en el campo BLOB insertaremos la foto_reconvertida.*/
$base="ventasml";
$tabla="fotos";
$conexion=mysql_connect ("localhost","root","");
mysql_select_db ($base, $conexion);
$meter="INSERT INTO ".$tabla;
$meter .=" (num_ident, imagen, nombre, tamano, formato) ";
$meter .=" VALUES('$foto_id','$foto_reconvertida','$foto_titulo',";
$meter .= "$foto_size, '$extension')";
$conexion = mysql_connect("localhost","root","");
mysql_select_db("ventasml",$conexion);
$sql_query = "INSERT INTO datos_deposito values('$folio_venta','$articulos','$tipo_cobro','$sucursal','$fecha_pago','$monto','$comprobante')";
mysql_query($sql_query,$conexion);
if (@mysql_query($meter,$conexion))
{
echo "
<script>alert('Datos Guardados.')</script>
";
if($_POST['titulo'])
{
echo "
<hr>
<br>";
echo "
<div align='right'>De clic <a href='http://localhost/Dinacom/Listo.php'>aqui</a> para continuar o Vea la imagen que nos ha enviado.</div>
";
}
}
else
{
}
}
else
{echo "
<script>alert('No Guardamos tus datos, revisa que la imagen sea JPG, GIF o PNG. Y el tamaño maximo de 1 MB.')</script>
";}
}
?>
<FORM action="g_fotos.php" method="get" target="ventana1" onsubmit="window.open('', 'ventana1', 'scrollbar=yes,resizable=yes,left=50,statusbar=no')">
<?php
echo"<INPUT type='hidden' name='id' value=" . $foto_id . ">";
?>
<INPUT type="submit" name="ver" value="Ver Imagen"><br />
</FORM>
----------------------------------------------------------------------------------------------------
En el Form ACTION="g_fotos.php" tengo el siguiente codigo:
---------------------------------------------------------------------------------------------
<?
if ($_GET['id'])
{
$base="ventasml";
$tabla="fotos";
$conexion=mysql_connect ("localhost","root","");
mysql_select_db ($base, $conexion);
$sacar = "SELECT * FROM fotos WHERE num_ident = " . $_GET['id'];
$resultado =...
Acá te dejo mi código por si tienes tiempo de chequear que estoy haciendo mal pues nunca he programado en PHP ni JavaScript.
--------------------------------------------------------------------------------------
$folio_venta = $_POST['folio'];
$articulos = $_POST['folio'];
$tipo_cobro = $_POST['tipo_cobro'];
$sucursal = $_POST['sucursal'];
$fecha_pago = $_POST['date'];
$monto = $_POST['monto'];
$comprobante = $_POST['folio'];
$foto_name= $_FILES['foto']['name'];
$foto_size= $_FILES['foto']['size'];
$foto_type= $_FILES['foto']['type'];
$foto_temporal= $_FILES['foto']['tmp_name'];
$lim_tamano= $_POST['lim_tamano'];
$foto_titulo= $_POST['titulo'];
$foto_id= $_POST['folio'];
# Limitamos los formatos de imagen admitidos a: png, jpg y gif
if ($foto_type=="image/x-png" OR $foto_type=="image/png")
{
$extension="image/png";
}
if ($foto_type=="image/pjpeg" OR $foto_type=="image/jpeg")
{
$extension="image/jpeg";
}
if ($foto_type=="image/gif" OR $foto_type=="image/gif")
{
$extension="image/gif";
}
/*Condicionamos el INSERT para que la foto tenga nombre,
un tamaño distinto de cero y menor que el límite
y que la variable extensión no sea null*/
if ($foto_name != "" AND $foto_size != 0 AND $foto_titulo !='' AND $foto_size<=$lim_tamano AND $extension !='')
{
/*Reconversion de la imagen para meter en la tabla
abrimos el fichero temporal en modo
lectura "r" y binaria "b"*/
$f1= fopen($foto_temporal,"rb");
# Leemos el fichero completo limitando la lectura al tamaño del fichero
$foto_reconvertida = fread($f1, $foto_size);
/* Anteponemos "\" a las comillas que pudiera contener el fichero
para evitar que sean interpretadas como final de cadena.*/
$foto_reconvertida=addslashes($foto_reconvertida);
/* Abrimos la base de datos y escribimos las intrucciones para Insertar y
en el campo BLOB insertaremos la foto_reconvertida.*/
$base="ventasml";
$tabla="fotos";
$conexion=mysql_connect ("localhost","root","");
mysql_select_db ($base, $conexion);
$meter="INSERT INTO ".$tabla;
$meter .=" (num_ident, imagen, nombre, tamano, formato) ";
$meter .=" VALUES('$foto_id','$foto_reconvertida','$foto_titulo',";
$meter .= "$foto_size, '$extension')";
$conexion = mysql_connect("localhost","root","");
mysql_select_db("ventasml",$conexion);
$sql_query = "INSERT INTO datos_deposito values('$folio_venta','$articulos','$tipo_cobro','$sucursal','$fecha_pago','$monto','$comprobante')";
mysql_query($sql_query,$conexion);
if (@mysql_query($meter,$conexion))
{
echo "
<script>alert('Datos Guardados.')</script>
";
if($_POST['titulo'])
{
echo "
<hr>
<br>";
echo "
<div align='right'>De clic <a href='http://localhost/Dinacom/Listo.php'>aqui</a> para continuar o Vea la imagen que nos ha enviado.</div>
";
}
}
else
{
}
}
else
{echo "
<script>alert('No Guardamos tus datos, revisa que la imagen sea JPG, GIF o PNG. Y el tamaño maximo de 1 MB.')</script>
";}
}
?>
<FORM action="g_fotos.php" method="get" target="ventana1" onsubmit="window.open('', 'ventana1', 'scrollbar=yes,resizable=yes,left=50,statusbar=no')">
<?php
echo"<INPUT type='hidden' name='id' value=" . $foto_id . ">";
?>
<INPUT type="submit" name="ver" value="Ver Imagen"><br />
</FORM>
----------------------------------------------------------------------------------------------------
En el Form ACTION="g_fotos.php" tengo el siguiente codigo:
---------------------------------------------------------------------------------------------
<?
if ($_GET['id'])
{
$base="ventasml";
$tabla="fotos";
$conexion=mysql_connect ("localhost","root","");
mysql_select_db ($base, $conexion);
$sacar = "SELECT * FROM fotos WHERE num_ident = " . $_GET['id'];
$resultado =...
3 respuestas
Respuesta de ditman
1
Respuesta de moscrates
1
Respuesta de Jorge Vila
1