Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/10/2003, 08:53
Avatar de Chuty
Chuty
 
Fecha de Ingreso: noviembre-2002
Ubicación: el bar de la esquina
Mensajes: 609
Antigüedad: 17 años, 6 meses
Puntos: 2
Preguntas o Problemas ....

Bueno estoy tratando de insertar una imagen en mi base de datos MSSQL Server
Buscando informacion encontre que a partir de PHP4.3 implementaron
file_get_contents -- Reads entire file into a string
Description
string file_get_contents ( string filename [, int use_include_path [, resource context]])
Identical to file(), except that file_get_contents() returns the file in a string.
file_get_contents() is the preferred way to read the contents of a file into a string. It will use memory mapping techniques if supported by your OS to enhance performance.

Nota: Esta función es segura binariamente.

Por un lado hice este ejemplo on la funcion
Código PHP:
<?

 $datastring 
file_get_contents("firma.png");
 
$data unpack("H*hex"$datastring);
// Ver funcion

  
$conex odbc_connect("MISERVER""sa""sa");
  
$consulta = ("INSERT dbo.tmp_image(IMAGEN, NOMBRE, LONG) values (0x".$data['hex'].",'img.jpg', '233')");

  
$resultado odbc_exec($conex$consulta);
  
odbc_free_result($resultado);
  
odbc_close($conex);
?>
unpack
(PHP 3, PHP 4 )

unpack -- desempaqueta datos de una cadena binaria
Descripción
array unpack ( string format, string data)

Desempaqueta datos de una cadena binaria en un array, de acuerdo al formato format. Devuelve un array que contiene los elementos de la cadena binaria desempaquetados.

Unpack funciona de manera ligeramente diferente a Perl, ya que los datos desempaquetados se almacenan en un array asociativo. Para conseguir ésto debe nombrar los diferentes códigos de formato y separarlos por una barra inclinada /. Ejemplo 1. cadena de formato unpack

$array = unpack("c2chars/nint", $binarydata);

Por otro lado con la version de PHP 4.2 usaba este otro ejemplo y me daba el mismo resultado.

Código PHP:
<?
$filename 
firma.png;
$fd fopen("$filename ""rb");
$content fread($fdfilesize($filename));
fclose($fd);

  
$conex odbc_connect("MISERVER""sa""sa");

  
$consulta = ("INSERT dbo.tmp_image(NOMBRE, LONG, IMAGEN) values ('img.jpg','AAAA', $content )");
                    
  
$resultado odbc_exec($conex$consulta);
  
odbc_free_result($resultado);
  
odbc_close($conex);
?>
Mi pregunta es en el primer ejemplo tengo que desempaquetar los datos de la cadena binaria con la funcion unpack para insertar?? o deveria empaquetar los datos con la funcion pack ya que el resultado del primer ejemplo y el segundo me da el mismo resultado.
Alguien me puede dar una mano o decirme en que me estoy equivocando.
desde ya muchas gracias y saludos a todos