注意:我已将我的所有控制台输出都包含为pastebin链接,以便让这个问题易于理解......
我正在尝试为我的RoR应用程序创建基本图像文件上传。但每次我提交附有图像的表单(带有单个文件输入的多部分编码表单)时,我会在WEBRick控制台上收到以下错误:
我已经搜索了一段时间,其他几个地方提到了类似的问题,但我发现的唯一处方是由于特定版本的错误而升级机架测试。我似乎无法找到他们引用的版本,我运行gem update
和bundle update
无济于事。以下是bundle
的输出:
我不确定我还能做些什么来升级机架测试 - 我对Rails和Linux环境一般都是新手。
最后一点:虽然我尝试上传了几个不同大小的不同文件,从4KB到300KB,但Firebug中的请求大小总是216B。我不太熟悉多部分文件上传请求的内部工作原理,但我的HTML表单本身可能出现问题吗?
类似问题的链接:
Rails3, Cucumber, Capybara, File upload => bad content body (EOFError)?
http://groups.google.com/group/cukes/browse_thread/thread/5028306893c2c54a
答案 0 :(得分:4)
使用Sinatra进入此错误 - 结果是文件输入缺少name属性。
答案 1 :(得分:1)
似乎问题不在Rails方面,而在于我的表单。我一直在使用this jQuery插件来尝试自定义样式文件输入控件。它通过将opacity:0;
的文件输入控件放在你提供的任何元素上(在我的例子中,我的按钮的div
)。
我不确定发生了什么,但请求是从浏览器发出的,具有多部分数据的开放边界,但没有正文或结束边界。换句话说,FireBug简单地显示出站请求有效负载:
....
Request Payload:
------WebKitFormBoundaryzwgDaIoTked9N6CB
Response Headers:
...
而不是:
....
Request Payload:
------WebKitFormBoundaryzwgDaIoTked9N6CB
Content-Disposition: form-data; name="upload"; filename="filename.jpg"
Content-Type: image/jpeg
------WebKitFormBoundaryzwgDaIoTked9N6CB--
Response Headers:
...
一旦我放弃了自定义样式并简单地插入正常形式,它一切正常。希望这对可能遇到类似问题的其他人有所帮助!