varbinary(max)
テーブルを調べて、各レコードからblobデータを外部ファイルに抽出するPHPスクリプトを作成しています。ファイルが4096bを超えている場合を除いて、コードは完全に機能しています(私は、いくつかの画像を調べるために実質的に同じコードを使用しました)-データは正確に4096で切り捨てられます。
、、の値を変更しましたが、mssql.textlimit
成功mssql.textsize
しodbc.defaultlrl
ませんでした。
ここで何かが足りませんか?
<?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>");
}
}
?>
出力
試行中...projectPhotos/ docs / file1.pdf完了(4096)
試行中...projectPhotos/ docs / file2.zip完了(4096)
試行中...projectPhotos/ docsv3.pdf完了(4096)
等..