PHP está truncando los datos del Blob MSSQL (4096b), incluso después de establecer los valores INI. ¿Me estoy perdiendo uno?
Estoy escribiendo un script PHP que pasa por una tabla y extrae elvarbinary(max)
datos de blob de cada registro en un archivo externo. El código funciona perfectamente (utilicé prácticamente el mismo código para pasar por algunas imágenes) excepto cuando un archivo tiene más de 4096b: los datos se truncan exactamente en 4096.
He modificado los valores paramssql.textlimit
, mssql.textsize
yodbc.defaultlrl
Sin ningún éxito.
¿Me estoy perdiendo de algo?
<?php
ini_set("mssql.textlimit" , "2147483647");
ini_set("mssql.textsize" , "2147483647");
ini_set("odbc.defaultlrl", "0");
include_once('common.php'); //Connection to DB takes place here.
$id=$_REQUEST['i'];
$q = odbc_exec($connect, "Select id,filename,documentBin from Projectdocuments where id = $id");
if (odbc_fetch_row($q)){
echo "Trying $filename ... ";
$fileName="projectPhotos/docs/".odbc_result($q,"filename");
if (file_exists($fileName)){
unlink($fileName);
}
if($fh = fopen($fileName, "wb")) {
$binData=odbc_result($q,"documentBin");
fwrite($fh, $binData) ;
fclose($fh);
$size = filesize($fileName);
echo ("$fileName<br />Done ($size)<br><br>");
}else {
echo ("$fileName Failed<br>");
}
}
?>
SALIDA
Intentando ... projectPhotos / docs / file1.pdf Listo (4096)
Intentando ... projectPhotos / docs / file2.zip Listo (4096)
Intentando ... projectPhotos / docsv3.pdf Listo (4096)
etc.