O PHP está truncando os dados do MSSQL Blob (4096b), mesmo depois de definir os valores INI. Estou sentindo falta de um?
Estou escrevendo um script PHP que percorre uma tabela e extrai ovarbinary(max)
blob dados de cada registro em um arquivo externo. O código está funcionando perfeitamente (usei praticamente o mesmo código para passar por algumas imagens), exceto quando um arquivo tem mais de 4096b - os dados são truncados em exatamente 4096.
Eu modifiquei os valores paramssql.textlimit
, mssql.textsize
eodbc.defaultlrl
sem nenhum sucesso.
Estou faltando alguma coisa aqui?
<?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>");
}
}
?>
RESULTADO
Tentando ... projectPhotos / docs / file1.pdf Concluído (4096)
Tentando ... projectPhotos / docs / file2.zip Concluído (4096)
Tentando ... projectPhotos / docsv3.pdf Concluído (4096)
etc ..