1

我正在尝试显示保存在图像字段中的数据库中的图像。但我只能看到 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 服务器上的数据库。

实际上它是访问控制系统数据库,以及安装在该程序文件夹中的 SQL 文件,但不知道这些信息是否有用。

任何的想法?

更新 照片字段类型的屏幕截图: 照片字段类型的屏幕截图

4

4 回答 4

6

有同样的问题,先运行这个:

mssql_query('SET TEXTSIZE 10000000'); // sets limit to 10MB
于 2013-02-11T09:30:13.210 回答
2

很可能您使用的数据类型(例如blob)对于Photo您要保存的图像的大小过于严格。每种数据类型对可以存储在该字段中的数据量都有不同的限制。

有关一些不同字段类型及其相关存储容量/适用性的示例,请参阅MySQL 文档中的此页面。

例如,该blob类型的限制为 2^16 字节 (64K)。

如果您的图像比这大(很可能),请尝试将字段类型更改为mediumblob(2^24 = 16.78MB)。

如果您正在处理非常大的图像,那么您可能需要longblob(2^32 = 4.29 GB),但在那个阶段,您将遇到的不仅仅是数据存储问题 :)

于 2012-04-27T12:00:53.167 回答
1

检查您是否对 field 有限制Photo

于 2012-04-27T11:57:33.837 回答
0

鉴于您的评论说整个图像存储在数据库中,问题可能与 PHP 和/或网络服务器中的数据限制/超时有关。

编辑:我在这里留下了答案的以下部分以获取历史信息(以显示我们尝试过的其他内容),但请参阅下面的评论,因为该问题更有可能与 PHP 或网络服务器配置设置有关,从而限制了响应数据的大小。还没有完全解决。


我注意到你有一个Content-type标题,但没有Content-length标题。

您可以尝试添加Content-length具有任意已知值(例如 12288)的标头,看看这是否会影响返回文件的大小(因为您知道它当前是 63K - 它会更改为 12K 吗?)

如果是这样,那么您需要让 PHP 计算/找出图像的实际大小并添加该长度的 Content-length 标头。

于 2012-04-27T12:32:58.670 回答