Foros del Web » Programando para Internet » PHP »

Imagenes binarias

Estas en el tema de Imagenes binarias en el foro de PHP en Foros del Web. Hola a todos, despues de una larga búsqueda, logre encontrar y acomodar el codigo para permitir que se puedan subir archivos o documentos a una ...
  #1 (permalink)  
Antiguo 11/09/2006, 14:05
 
Fecha de Ingreso: febrero-2005
Mensajes: 16
Antigüedad: 19 años, 2 meses
Puntos: 0
Imagenes binarias

Hola a todos, despues de una larga búsqueda, logre encontrar y acomodar el codigo para permitir que se puedan subir archivos o documentos a una tabla de forma binaria.

Ahora lo que no he podido y busco quien me pueda ayudar, es poder subir imagenes en forma binaria a la tabla y poder presentarlas en la pagina web.

Tengo actualmente el codigo que sube las imagenes a la tabla y el que descarga, pero no el que muestra las imagenes.

Quiero compartir este codigo con ustedes para que quien se este sacando un ojo como me paso a mi, lo pueda elaborar mas facilmente y solicito me puedan ayudar a presentar mis imagenes directamente desde la tabla, asi no tengo que almacenar cientos de imagenes en el servidor.

Como se hace, no lo se y espero me puedan ayudar con esto.

Adjunto el codigo y gracias

Upload

<?php require_once('../../Connections/conexion.php'); ?>
<?php
mysql_select_db($database_conexion, $conexion);
$query_documentos = "SELECT * FROM documentos";
$documentos = mysql_query($query_documentos, $conexion) or die(mysql_error());
$row_documentos = mysql_fetch_assoc($documentos);
$totalRows_documentos = mysql_num_rows($documentos);
?>

<?php
$tmpName = $_FILES['custom_archivo']['tmp_name'];
$custom_sizefile = $_FILES['custom_archivo']['size'];
$custom_tipofile = $_FILES['custom_archivo']['type'];
$custom_filename = $_FILES['custom_archivo']['name'];

$fp = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);

$sql = "INSERT INTO documentos (custom_codigo, custom_descripcion, custom_fechactu, custom_codnorma, custom_fechadoc, custom_version, custom_tipo, custom_tipoarh, custom_nombre, custom_archivo, custom_filename, custom_tipofile, custom_sizefile)
VALUES ('$custom_codigo', '$custom_descripcion', '$custom_fechactu', '$custom_codnorma', '$custom_fechadoc', '$custom_version', '$custom_tipo', '$custom_tipoarh', '$custom_nombre', '$content', '$custom_filename', '$custom_tipofile', '$custom_sizefile')";

$result = mysql_query($sql);
mysql_close($conexion);
?>
<meta http-equiv="refresh" content="1;URL=index.php">
<?php
mysql_free_result($documentos);
?>


Y este es el de la descarga.

<?php
if(isset($_GET['custom_codnorma']))
{
include "../../Connections/conexion.php";

$custom_codnorma = $_GET['custom_codnorma'];
$query = "SELECT custom_archivo, custom_tipofile, custom_sizefile, custom_filename FROM documentos WHERE custom_id = '$custom_codnorma'";
$result = mysql_query($query) or die('Error, query failed, query 1');
list($custom_archivo, $custom_tipofile, $custom_sizefile, $custom_filename) = mysql_fetch_array($result);

header("Content-Disposition: attachment; filename=$custom_filename");
header("Content-length: $custom_sizefile");
header("Content-type: $custom_tipofile");
echo $custom_archivo;

mysql_close($conexion);
exit;
}
?>


.
  #2 (permalink)  
Antiguo 11/09/2006, 15:04
 
Fecha de Ingreso: agosto-2006
Mensajes: 121
Antigüedad: 17 años, 8 meses
Puntos: 0
Pues más o menos como lo haces en el script de descarga. Tienes que leer los datos binarios de la tabla. Luego indicar al navegador cliente que el tipo de contenido es el MIME que guardas en la tabla con un header("content-type: $MIME"). Y finalmente enviar los datos de la imagen al cliente con un echo o algo. Cuando haces referencia a la imagen en el tag <img> tienes que indicar en el src el nombre del script que realiza las acciones anteriores con una variable URL que identifique cuál es la imagen a descargar. Por ejemplo src="imagen.php?id=1". Tu código quedaría más o menos así:


imagen.php
Código PHP:
<?php
if(isset($_GET['id']))
{
include 
"../../Connections/conexion.php";

$id $_GET['id'];
$query "SELECT custom_archivo, custom_tipofile FROM documentos WHERE custom_id = '$id'";
$result mysql_query($query) or die('Error, query failed, query 1');
list(
$custom_archivo$custom_tipofile) = mysql_fetch_array($result);

header("Content-type: $custom_tipofile");
echo 
stripslashes($custom_archivo);

mysql_close($conexion);
exit;
}
?>
He puesto el stripslashes porque veo que no lo usas en el script de descarga. Esto lo que hace es deshacer el addslashes() que se usa en el INSERT para escapar las comillas (" o ') antes de insertar en la BD. Deberías revisar si en el php.ini tienes el magic_quotes a on. Si está activado no es necesario que uses estas dos funciones.

I si quieres ver la imagen con id=2 en el navegador utilizarías el tag img así:

Código HTML:
<img src="imagen.php?id=2" /> 
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 12:28.