我正在尝试显示保存在图像字段中的数据库。但我只能看到63KB的图像。
这是我的代码:
$sql='SELECT Photo FROM Personel WHERE ID_USER = '.$id;
$result=mssql_query($sql);
$res=mssql_fetch_assoc($result);
header('Content-type:image/jpeg');
echo$res['Photo'];
你可以看到没什么特别的,所以我认为在数据库或服务器配置方面存在问题。
安装在Windows XP服务器上的数据库。
实际上它是访问控制系统DB,以及安装在该程序文件夹中的SQL文件,但不知道这些信息是否有用。
有什么想法吗?
更新 照片字段类型的屏幕截图:
答案 0 :(得分:5)
遇到同样的问题,先运行一下:
mssql_query('SET TEXTSIZE 10000000'); // sets limit to 10MB
答案 1 :(得分:1)
检查您是否对字段Photo
有限制。
答案 2 :(得分:1)
您可能正在使用blob
字段的数据类型(例如Photo
),该字段对您要保存的图片的大小限制太多。每种数据类型对可以存储在该字段中的数据量有不同的限制。
有关不同字段类型及其相关存储容量/适用性的示例,请参阅this page in the MySQL documentation。
例如,blob
类型的限制为2 ^ 16字节(64K)。
如果您的图片大于(非常可能),请尝试将字段类型更改为mediumblob
(2 ^ 24 = 16.78MB)。
如果您正在处理真正的大图像,那么您可能需要longblob
(2 ^ 32 = 4.29 GB),但在那个阶段,您将拥有更多只是数据存储问题:)
答案 3 :(得分:1)
鉴于您的评论表明整个图像 存储在数据库中,因此问题可能与PHP中的数据限制/超时有关。或网络服务器。
编辑:我在这里留下了以下部分答案的历史信息(以显示我们尝试过的其他内容),但请参阅下面的评论,因为这个问题更可能与PHP或Web服务器配置设置有关,限制响应数据的大小。尚未完全解决。
我注意到您有一个Content-type
标题,但不是Content-length
标题。
您可以尝试添加一个Content-length
标头,其中包含一些任意的已知值(例如12288)并查看这是否会影响返回文件的大小(因为您知道它目前是63K - 是否会更改为12K? )
如果确实如此,那么您需要让PHP计算/找出图像的实际大小,并添加该长度的Content-length标题。