2009-07-25 11 views
2

私は完全に困惑しています。私は 完全性のために背景を与えるでしょうが、それが助けになるかどうかは分かりません。私は1つのLiftインスタンスを実行している標準のJettyセットアップでLiftプロジェクトを実行しています。マックOS X.Jettyが画像を提供していることで奇妙です

私は、XML入力を変換した画像をレンダリングし、内容のMD5からfilenametakenとウェブルート/画像/ディレクトリの下にディスクに保存しますスニペットなど 「c5669d3eedcf7d305dcf9f88a61b3ee0.pngを持っています"スニペットは、生成されたイメージへの参照を含むimgタグを出力に含めるために返します。

ほとんどの場合、ほとんどの画像が機能します。しかし、ほとんどの場合、それらのうちのいくつかはそうではなく、一部の画像はブラウザによってレンダリングされません。ブラウザ(CaminoとFirefox)で問題のある画像を表示しようとすると、画像が表示されず、何かが曖昧であることが示唆されます。

別のブラウザ(SafariおよびQuickTime)で表示すると、画像が正常に動作します。ダウンロードしてイメージを開いても問題ありません。 Caminoで直接ファイルを表示すると(つまりfile:// ...)、画像は正常に表示されます。ファイル自体は明らかに壊れていません。

すべてのファイル名が同じ37文字なので、ファイル名の長さにすることはできません。

私は、Jettyによって提供されたときに画像の転送に何かが間違っているとしか思えません。

失敗するURIは、一貫して失敗し、断続的ではありません。 Jettyを再起動すると何の効果もありません。そのため、サーバーの起動後にファイルが作成されたとは限りません。また、レンダリングはブロック呼び出しであるため、HTMLが送信され、ブラウザが画像を要求する前に、ファイルがまだ開いている可能性はありません/ が保存されていません。

私が想像できる唯一のことは、MIMEタイプがマングルされていることです。そのため、適切なマッピングをweb.xmlに入れましたが、まだシガーはありません。 MIMEタイプはOKと思われ、バイト数が正しいことを確認しました。問題の画像の場合

:完全性については

 
HTTP/1.1 200 OK 
Expires: Thu, 01 Jan 1970 00:00:00 GMT 
Set-Cookie: JSESSIONID=1dbeh8eq4mtu0;Path=/ 
Content-Type: image/png 
Content-Length: 25488 
Last-Modified: Sat, 25 Jul 2009 15:38:19 GMT 
Server: Jetty(6.1.16) 

、細かいロードん​​画像からヘッダ:

 
HTTP/1.1 200 OK 
Expires: Thu, 01 Jan 1970 00:00:00 GMT 
Set-Cookie: JSESSIONID=15dt649lzovc4;Path=/ 
Content-Type: image/png 
Content-Length: 18657 
Last-Modified: Sat, 25 Jul 2009 15:41:35 GMT 
Server: Jetty(6.1.16) 

このことについて非常に非常に困惑し。すべての手がかりは?

乾杯

ジョー

答えて

1

私はあなたがカール/ wgetのから、後でURLをテストするか、ヘッダを取得するために、パケットスニファを使用しているかどうかわからないんだけど、念のため、かつて。私はHTTPScoopのようなツールを使って、Firefoxに送られた実際のデータが予想されるデータに適合していることを確認しようとします。

私に打撃を与えるのはサイズの違いだけです。それは一般的に失敗した大きな画像ですか?もしそうなら、私はファイルのバッファリング/フラッシングのいくつかの種類の壊れていると言うでしょう。

1

私も同様の問題があります。私にはJettyがイメージをテキストとして扱い、UTF-8にエンコードしようとしているようです。私は7ビットのデータだけを含むテストデータを作りました。うまくいきましたが、データに8ビット目が設定されたバイトが入っていれば、UTF-8エンコーディングのように複数のバイトに変換されます。

PNGファイルは、常に壊れたJettyセットアップによって処理されるとき、バイト0x89,0x50,4x4e、0x47で始まるため、最初の0x89は0xef、0xbf、0xbdに変換されます。これは、AFAIKが「間違ったUTF文字」などを意味するUTF-8コード0xfffdです。

同じ設定が自分のMacとLinuxボックスで動作するので、環境内の何かでなければならないと思いますが、他のLinuxボックスやWindowsマシンでは常に失敗します。

0

あなたはJARから出ていますか?私は同じ問題を抱えていますが、透明レイヤーを持つPNGのみで、JARから提供された場合のみです。私がカールすると、すぐに100%までポップアップしますが、30秒のタイムアウトに達するまで「ダウンロード」を続けます。

関連する問題