1

Imageフィールドに保存された DB から画像を表示しようとしています。しかし、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']; 

特に何も見られないので、DBやサーバーの設定に問題があると思います。

Windows XP サーバーにインストールされた DB。

実際には、アクセス制御システム DB と、そのプログラムのフォルダーにインストールされた 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

フィールドに制限があるかどうかを確認してくださいPhoto

于 2012-04-27T11:57:33.837 に答える
0

画像全体がDB に保存されているというコメントを考えると、問題は PHP および/または Web サーバー内のデータ制限/タイムアウトに関連している可能性があります。

編集:過去の情報 (他に何を試したかを示すため) のために回答の次の部分をここに残しましたが、問題が PHP または Web サーバーの構成設定に関連している可能性が高いため、以下のコメントを参照してください。応答データのサイズ。まだ完全には解決していません。


ヘッダーがあることに気付きましたが、Content-typeヘッダーはありませんContent-length

任意の既知の値 (12288 など)を持つヘッダーを追加してみて、Content-lengthこれが返されるファイルのサイズに影響するかどうかを確認できます (現在 63K であることがわかっているため、12K に変更されますか?)

その場合は、PHP で画像の実際のサイズを計算/調べ、その長さの Content-length ヘッダーを追加する必要があります。

于 2012-04-27T12:32:58.670 に答える