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は正しく機能しているようです。