2

Ruby1.93とRails3.2を使用していて、関数send_dataとを使用して画像を送信しようとしていますsend_file。現在、開発サーバーとしてWebBrickを使用しています。

どちらの場合も、画像が約330kBよりも小さい限り、問題なく動作するようです。しかし、画像が大きくなると(たとえば、1MB)Firefox、Maxthon、IEはすべて画像の表示を停止し、Firefoxは画像にエラーが含まれていると言います。

破損した画像ファイルをダウンロードし、ファイルサイズを元の画像と比較しました。大きな画像では、ファイルサイズは約400バイト大きくなります。

試したコードブロックは次のとおりです。

send_data img.to_blob, :stream => 'false', :filename => 'test.jpg', :type => 'image/jpg', :disposition => 'inline'

send_data( img.to_blob, :filename => "test.jpg" )

send_file( 'C:\WebProjects\RubyTest\public\data\pic3_3.jpg' , :disposition => 'inline')

File.open('C:\WebProjects\RubyTest\public\data\pic3_3.jpg', 'rb') do |f|
   send_data f.read, :type => "image/jpeg", :disposition => "inline"
end

面白いことに、Firefox、Maxthon、IEのファイルがさらに大きくなると、画像が破損し、BlackberryPlaybookで画像を表示できました。一方、Playbookには、他のブラウザが正しく表示する小さな画像に問題がありました。

.to_blobところで、バイナリオブジェクトを返すRMagick関数です。しかし、RMagickは正しく機能しているようです。

4

1 に答える 1

2

私は答えを見つけたと思います。 この Web サイトでわかるように、WEBrick を Thin に置き換えました。 WEBrick は大きなファイルに問題があるようです。Thin が最終的な解決策かどうかはわかりませんが、少なくとも問題は解決しました。

于 2012-12-31T19:54:40.047 に答える