我使用的是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投诉一个损坏的图像和黑莓playbook能够显示图片。另一方面,playbook对其他浏览器正确显示的一些较小的图片有问题。
Btw
.to_blob
是返回二进制对象的RMagick函数但马吉克似乎工作正常。 最佳答案
我想我找到了答案。
I replaced WEBrick by Thin as you can see on this website.
看来韦瑞克对大文件有问题。我不知道瘦是不是最终的解决方案,但至少它解决了这个问题。
关于ruby-on-rails - Ruby On Rails:使用send_data/send_file发送大图片会导致错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14099330/