ruby-on-rails - Ruby on Rails : Sending large pictures using send_data/send_file results in errors

标签 ruby-on-rails ruby

我使用的是 Ruby 1.93 和 Rails 3.2,并尝试使用函数 send_datasend_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/

相关文章:

javascript - rails 5 : allow javascript posted image from controller

ruby-on-rails - 如何在 gem 内的模块内覆盖类方法?

ruby - 从方法执行下一个

java - 将 Java 对象绑定(bind)到 ruby​​ 哈希值

ruby - 你能要求 ruby​​ 将警告视为错误吗?

ruby - 如何使用 Ruby on Rails Mustache 从 ActiveModel 在 HTML 中预览

ruby-on-rails - 使用 ajax 提交表单后显示 flash 消息

javascript - rails link_to :remote from within ajax-loaded content

mysql - ActiveRecord/MySQL 查询以返回分组的对象集

ruby - 如何在 Ruby 中设置标准输入的编码