I am writing a PHP script that goes through a table and extracts the varbinary(max) blob data from each record into an external file. The code is working perfectly, except when a file is over 4096b - the data is truncated at exactly 4096.
I've modified the values for mssql.textlimit, mssql.textsize, and odbc.defaultlrl without any success.
Am I missing something here?
<?php
ini_set("mssql.textlimit" , "2147483647");
ini_set("mssql.textsize" , "2147483647");
ini_set("odbc.defaultlrl", "0");
include_once('common.php');
$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>");
}
}
?>
OUTPUT
Trying ... projectPhotos/docs/file1.pdf
Done (4096)
Trying ... projectPhotos/docs/file2.zip Done (4096)
Trying ...
projectPhotos/docsv3.pdf Done (4096)
etc..