我使用的是 Ruby 1.93 和 Rails 3.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 提示图像损坏,而 Blackberry Playbook 却能够显示该图像。另一方面,Playbook 在处理其他浏览器正确显示的一些较小图片时出现问题。
Btw .to_blob
是一个返回二进制对象的 RMagick 函数。但 RMagick 似乎工作正常。
最佳答案
我想我找到了答案。 I replaced WEBrick by Thin as you can see on this website. WEBrick 似乎在处理较大的文件时存在问题。我不知道Thin是否是最终的解决方案,但至少它解决了问题。
关于ruby-on-rails - Ruby on Rails : Sending large pictures using send_data/send_file results in errors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14099330/