Ruby Sinatra中的多个文件上载

Ruby Sinatra中的多个文件上载,ruby,file-upload,sinatra,Ruby,File Upload,Sinatra,我正在编写一个简单的Sinatra应用程序,但在读取文件时,出现了一些问题,如没有使Rack抛出命名错误:未定义的方法“bytesize”(哈希) 该表格是这样写的: 但是,在我的任何代码执行之前,接收端抛出上述错误,即机架未正确解析输入[name=images]。我的表格寄错了吗?如果我去掉括号[],那么只发送最后一个文件(许多文件中的最后一个),但我觉得我可能遗漏了一些东西 只是想澄清一下:这是Sinatra v1.4.3和Rack v1.5.2,后者引发了异常。完全回溯。唯一让我感到不

我正在编写一个简单的Sinatra应用程序,但在读取文件时,出现了一些问题,如
没有使Rack抛出
命名错误:未定义的方法“bytesize”(哈希)

该表格是这样写的:


但是,在我的任何代码执行之前,接收端抛出上述错误,即机架未正确解析
输入[name=images]
。我的表格寄错了吗?如果我去掉括号
[]
,那么只发送最后一个文件(许多文件中的最后一个),但我觉得我可能遗漏了一些东西


只是想澄清一下:这是Sinatra v1.4.3和Rack v1.5.2,后者引发了异常。完全回溯。

唯一让我感到不安的是你没有使用POST方法——也许你的问题与此有关。无论如何,下面的代码对我来说非常适合。我希望这会给你一个如何修复代码的提示

require 'sinatra'

get '/' do
  <<-HTML
  <html>
  <head><title>Multi file upload</title></head>
  <body>
    <form action="/upload" method="post" enctype="multipart/form-data">
      <input type="file" name="images[]" multiple />
      <input type="submit" />
    </form>
  </body>
  </html>
  HTML
end

post '/upload' do
  content_type :text

  res = "I received the following files:\n"
  res << params['images'].map{|f| f[:filename] }.join("\n")
  res
end
需要“sinatra”
获取“/”do

错误在Ruby代码的某个地方。您需要发布操作源代码和任何其他相关代码。是的,它专门位于Rack上,正如我所说,它没有到达我的代码。我希望我的数组类型字段是问题所在。没有代码吗?而且,这似乎不是完整的回溯。异常在哪里?没有代码,因为异常不涉及我的代码,也就是说,它是由Rack抛出的。谢谢你的回答,Patrick!我只是复制和粘贴不正确,我将更新问题以反映这一点。出于好奇,您使用的是哪种Rack/Sinatra版本?不客气!我在MRI 2.0.0p195上使用了Rack 1.5.2和Sinatra 1.4.3来测试代码。我刚刚用MRI 1.9.3-p429进行了测试,效果也很好。这很奇怪,调试了几天,但从没想过简单的nginx重启就能解决问题。威尔·马克斯回答道,因为你帮了大忙,这可能会帮助其他人。