【问题标题】:Rails 3 application/octet-streamRails 3 应用程序/八位字节流
【发布时间】:2011-06-10 16:21:57
【问题描述】:

我正在开发一个应用程序,我使用回形针上传图像,然后在 Flash 应用程序中处理图像并使用 application/octet-stream 返回到我的应用程序。问题是来自 flash 的参数不能使用 params 获得。我见过类似的例子

File.open(..,..) {|f| f.write(request.body) }

但是当我这样做时,文件已经损坏了。

如何在 Rails 3 中处理这个问题?

【问题讨论】:

  • 当闪存与您的应用程序通信时,您的日志中的参数如何显示? flash 是否只是修改了表单的某些参数?
  • 我可以看到类似 id=1&png=... 的东西,看起来没问题,但是 params[:png] 是空的
  • 是在 webserver 的日志中还是在 Rails 的服务器日志中?
  • webserver 日志 - 我在 firebug(或其他一些 http 监视器,我不记得了)中看到了这个
  • 我使用http fox来监控这个,当我查看post数据时,我可以看到我期望的参数,但是params[]是空的

标签: ruby-on-rails ruby-on-rails-3


【解决方案1】:

确保请求参数已命中 Rails 应用程序后,您可能希望确保没有解析问题。尝试在控制器的操作中添加这些行:

def update # (or whatever)
  logger.debug "params: #{params.inspect}"
  # I hope you do not test this using very large files ;)
  logger.debug "request.raw_post: #{request.raw_post.inspect}"
  # ...
end

也许变量名以某种方式改变了?可能有什么东西对参数字符串进行了一次过多的转义?

另外,您说要保存request body 的文件已损坏。具体如何?

request.body 对象不需要是字符串。例如,它可能是一个 StringIO,因此您可能需要输入以下内容:

File.open(..,..) {|f| f.write(request.body.read) }

【讨论】:

    猜你喜欢
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 2017-10-21
    • 2017-04-02
    • 1970-01-01
    • 2022-10-11
    相关资源
    最近更新 更多