Dut*_*432 4 php sql blob truncation
我正在编写一个PHP脚本,它通过一个表并将varbinary(max)每个记录中的blob数据提取到一个外部文件中.代码工作正常(我使用几乎相同的代码来浏览一些图像),除非文件超过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>");
}
}
?>
Run Code Online (Sandbox Code Playgroud)
OUTPUT
尝试... projectPhotos/docs/file1.pdf完成(4096)
正在尝试... projectPhotos/docs/file2.zip完成(4096)
尝试... projectPhotos/docsv3.pdf完成(4096)
等等..
Jor*_*ore 13
而不是设置odbc.defaultlrl为0,而是尝试将其设置为实际值:
ini_set("odbc.defaultlrl", "100K");
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您正在使用mssql(freetds),请在/etc/freetds.conf中查找名为"text size"的设置.我的设置为64512,这正是我的图像被截断的原因.我把它设置为5MB(5242880),现在它就像一个魅力.
text size = 5242880
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5977 次 |
| 最近记录: |