Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/06/2006, 10:20
Malangon
 
Fecha de Ingreso: junio-2006
Mensajes: 2
Antigüedad: 17 años, 10 meses
Puntos: 0
Objetos OLE con PHP y Acess

Hola:
Estoy convirtiendo un script de asp en php que funciona bien, pero en php no logro que responda lo mismo, al parecer me hace una conversión de caracteres y no los manda en binario como debe ser.
Cualquier ayuda me sería de gran utilidad.
Muchas Gracias

Codigo en ASP:
<!--#include file="Connections.asp" -->
<%
TextSQL = "SELECT DISTINCTROW Config.* FROM Config;"
Set RsConfig = db.openRecordset(TextSQL)

Response.Buffer = true

set mstream = server.CreateObject("ADODB.Stream")
mstream.Type = 1 'adTypeBinary
mstream.Open
mstream.Write RsConfig("Logo")
mstream.position = 0

'¿Hay imagen?
if mstream.size < 10 then
mstream.Close
set mstream=nothing
Response.End
end if

'Header del BMP
B="B"
M="M"
'Buscando el Header BM
for i=0 to 512
x=mstream.Read(1)
z=cstr(x)
y= server.htmlencode(z)
if y=B then
Offset= i
end if
if y=M and i=offset+1 then
exit for
end if
next

Response.Clear
Response.ContentType="image/bmp"
Response.AddHeader "Pragma", "No-Cache"
Response.AddHeader "Content-Disposition", "inline;filename=logo.bmp"
mstream.position = Offset

Response.BinaryWrite mstream.Read
mstream.Close
set mstream=nothing
Response.End
%>

Codigo PHP:
<?php
ob_start();
include('Connections.php');
$TextSQL = "SELECT DISTINCTROW Config.* FROM Config;" ;
$conn->OpenRecordset("RsConfig",$TextSQL);

$mstream = new COM("ADODB.Stream");
$mstream->Type = 1; // 'adTypeBinary
$mstream->Open;
$mstream->Write($conn->recordset["RsConfig"]->Fields["Logo"]->Value);
$mstream->position = 0;

//'¿Hay imagen?
if ($mstream->size < 10)
{
$mstream->Close;
exit(0);
}

//'Header del BMP
$B="B";
$M="M";
$Offset=0;
//'Buscando el Header BM
for($i=0;$i<=512;$i++)
{
$x=$mstream->Read(1);
if ($x==$B)
{
$Offset = $i;
}
if (($x==$M) && ($i==$Offset+1))
{
break;
}
}

ob_clean();
header('Content-Type: image/bmp');
header('Pragma: No-Cache');
header('Content-Disposition: inline;filename="logo.bmp"');
$mstream->position = $Offset;
for($i=$Offset;$i<=$mstream->size;$i++)
{
$x = $mstream->Read(1);
echo $x;
}
$mstream->Close;
ob_flush();
?>