Foros del Web » Programando para Internet » PHP »

Problema para guardar una imagen en base de datos

Estas en el tema de Problema para guardar una imagen en base de datos en el foro de PHP en Foros del Web. Perdon que insista pero no pude solucionar el codigo para guardar una imagen PNG en mi base de datos SQL ya que guarda solo parte ...
  #1 (permalink)  
Antiguo 03/03/2003, 13:42
Avatar de Chuty  
Fecha de Ingreso: noviembre-2002
Ubicación: el bar de la esquina
Mensajes: 609
Antigüedad: 15 años, 1 mes
Puntos: 2
Problema para guardar una imagen en base de datos

Perdon que insista pero no pude solucionar el codigo para guardar una imagen PNG en mi base de datos SQL ya que guarda solo parte de la informacion de la imagen en formato binario que es como lo necesito. -- Antes de que me digan No me sirve guardar la ruta de acceso a la imagen ya que me piden guardar la imagen en formato binario dentro de la base de datos MS SQL SERVER tal como esta trabajando la misma.

El codigo que estoy probando es el siguiente. y no anda.

<?php
$fichero = "firma-01.png";

if (!isset($fichero))
{
// Mostrar el formulario de petición del fichero
}
else
// Proceso del elemento $fichero
{
// Comprobación de que $fichero existe en el directorio
// y se trata de un fichero
if (!file_exists($fichero) || !is_file($fichero))
{
// $fichero no es un nombre de un fichero perteneciente
// al directorio actual
echo "<H1 ALIGN='Center'>ERROR: no existe un fichero ",
"con ese nombre</H1>\n";
}
else
{
// Obtengo las propiedades del fichero cuyo nombre
// es $fichero
$tamanio = filesize($fichero);
}
}

$fp = fopen($fichero , "rb"); // o "rb" si usas Windows
$contenido= fread($fp, filesize($fichero));


// echo $contenido;
fclose($fp);
?>
<?php

$TDO = '001';
$NDO = '1234567890';
$LEN = $tamanio;
$DAT = $contenido;



// Se establece la conexión con la fuente de datos
$conex = odbc_connect("MISERVER", "sa", "sa");
$consulta = "INSERT mibase.tmp_cliri(TDO, NDO, LEN, DAT)
values ('$TDO' ,'$NDO', '$LEN_FIR', '$DAT')";

$resultado = odbc_exec($conex, $consulta);
$Num_Campos = odbc_num_fields($resultado);
$Num_Filas = odbc_num_rows($resultado);
$Num_Filas = 0;

//Se liberan recursos y se cierra la conexión
odbc_free_result($resultado);
odbc_close($conex);

?>

Desde ya muchas gracias
  #2 (permalink)  
Antiguo 03/03/2003, 13:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Yo no conozco SQL Server .. pero como toda BD en sus especificaciones de tipos de datos dirá que tamaño máximo (en byes) puedes almacenar en ese tipo de campo "binario" q esas usando .. Revisa ese punto en un manual de SQL server...

Por la parte de PHP tienes limitaciones a la hora de hacer el Upload y los datos q puedes enviar por POST .. (por defecto son 2 Megabytes y 8 Megabytes respectivamente .. en un phpinfo() lo puedes ver).

Tambien si tu script de proceso se demora mucho tiempo en esperar el Upload podría terminar el script (aunque estó no sé como se comportaría usando BD para datos binarios ..)

El caso que si dices que llega parte de los datos .. fijate si esa parte de datos es mas o menos siempre la misma .. Por ahí podrías deducir que es un problema de algun tipo de dato de tu BD o cofiguración de PHP q está limitando ...

Un saludo,
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 08:24.