1

クロムだけで奇妙な問題に直面しています。サーバーから Firefox で正常に動作する画像を取得していますが、クロムでは画像が一度読み込まれ、壊れた画像として表示されます。

Chrome のコンソールで、次のメッセージが表示されます。

Resource interpreted as Image but transferred with MIME type text/html: "http://46.137.249.133:8080/Smart/Request/query.htm?ReqType=SessionUnawareAttachmentDownloadReqType&Thumbnail=Yes&AttachmentRowID=344929138455741006"
GET http://46.137.249.133:8080/Smart/Request/query.htm?ReqType=SessionUnawareAttachmentDownloadReqType&Thumbnail=Yes&AttachmentRowID=344929138455741006  

MIME タイプも確認しましたが、image/jpeg. ここに出力がありますgetimagesize()

Array
(
    [0] => 289
    [1] => 202
    [2] => 2
    [3] => width="289" height="202"
    [bits] => 8
    [channels] => 3
    [mime] => image/jpeg
)
4

2 に答える 2

1

query.htmlで、何かを出力する前に(理想的には、スクリプトの最初に)、次を追加します。

header('Content-Type: image/jpeg');

返されるコンテンツがJPEG画像であることをブラウザに通知します。

于 2012-08-16T06:11:24.713 に答える
1

これは からの出力で、curl --verbose <your-url>Web サーバー (ポート 8080) がファイルを としてアドバタイズしていることがわかりますtext/html

< HTTP/1.1 200 OK
< Server: Apache-Coyote/1.1
[...]
< Content-Disposition: attachment; filename="Hall2.JPG"
< Content-Type: text/html;charset=ISO-8859-1

これを修正するには、Content-Type各 HTTP 応答にヘッダー行を追加して正しいメディア タイプを設定します。

PHP ではheader、次のような関数を使用して実行します。

header('Content-Type: image/jpeg');

これは、Java サーブレット ページの場合と非常によく似ています。

HttpServletResponse res;
res.setContentType("image/jpeg");
于 2012-08-16T06:17:47.890 に答える