以前的程序是把图片通过ASP以二进制的格式存储到MSSQLSERVER中的,现在需要用PHP把它显示出来,
$id = $_GET[‘id’];
$conn = dbo_connect();
$query = “select f.Data from Files f,Products p where p.PhotoSN=f.SN and p.ID=$id”;
$result = mssql_query($query, $conn);
if (mssql_num_rows($result)) {
$row = mssql_fetch_assoc($result);
if (!empty($row[‘Data’])) {
echo $row[‘Data’];
}
}
mssql_close($conn);
但是读取出来的图片都只有开头一小部分,其它部分是空白,全选以后看到的图片大小似乎也是正常的,就是有一部分显示不出来,好一个纳闷。质量高的图片显示的部分还要小,质量低的或者图片尺寸小的就要显示的多一些,看样子是读取的数据大小是一致的。后来一看$row[‘Data’]的长度,果然清一色的4096,原来如此。
上网查资料,费了好大劲,才看到一句有价值的话“是配置错了”。配置错了?难道PHP读取MSSQL的image数据还有大小限制?赶紧打开php.ini,搜索image,没有相关的,搜索4096,还没有相关的,不会吧?!哈哈,原来是已经搜索到文件末尾,还在向下搜索,难怪没有。赶紧改方向,找到了!但是无关,再搜,OK,终于找到了:
; Valid range 0 – 2147483647. Default = 4096.
;mssql.textlimit = 4096
; Valid range 0 – 2147483647. Default = 4096.
;mssql.textsize = 4096
原来如此,把mssql.textlimit和mssql.textsize后面的值都改成最大,2147483647,然后再把前面的分号去掉,保存,重启IIS。再去看刚才的程序显示出来的图片,成了,全部显示!
真亲啊!GOOD!