我是RoR的初学者 .
我正在使用Android应用程序将文件上传到服务器(rails) .
上传适用于单个文件,有时适用于多个文件 .
我已经跟踪堆栈跟踪并显示了一些变量,但我不明白为什么会发生错误 .
在错误期间,第二个文件在名称中无法识别,但它正在根据文件类型进行识别 .
我不明白为什么它对这些特定文件起作用,如下所示 .
请帮我理解这个 .

当它不起作用时:

tag_multipart_encoding(filename,content_type,name)中的数据:

Floyd.txt
纯文本/
上传文件[]

图像/ JPEG

日志:

[2015-11-15 07:52:29] ERROR NoMethodError:未定义方法force_encoding'为nil:NilClass /home/pi/.rvm/gems/ruby-2.2.1/gems/rack-1.6.4/lib/ rack / multipart / parser.rb:197:intag_multipart_encoding'/home/pi/.rvm/gems/ruby-2.2.1/gems/rack-1.6.4/lib/rack/multipart/parser.rb:76:in block (2级)解析'/home/pi/.rvm/gems/ruby-2.2.1/gems/rack-1.6.4/lib/rack/multipart/parser.rb:252:inget_data'/ home / pi / .rvm / gems / ruby-2.2.1 / gems / rack-1.6.4 / lib / rack / multipart / parser.rb:75:as in parse'/home/pi/.rvm/gems/ruby-2.2 . 1 / gems / rack-1.6.4 / lib / rack / multipart / parser.rb:56:inloop'/home/pi/.rvm/gems/ruby-2.2.1/gems/rack-1.6.4/lib/ rack / multipart / parser.rb:56:in parse'/home/pi/.rvm/gems/ruby-2.2.1/gems/rack-1.6.4/lib/rack/multipart.rb:25:inparse_multipart'/ home / pi / .rvm / gems / ruby-2.2.1 / gems / rack-1.6.4 / lib / rack / request.rb:376:in parse_multipart'/home/pi/.rvm/gems/ruby-2.2 . 1 / gems / rack-1.6.4 / lib / rack / request.rb:208:inPOST'/home/pi/.rvm/gems/ruby-2.2.1/gems/rack-1.6.4/lib/rack/ methodoverride.rb :39:in method_override_param'/home/pi/.rvm/gems/ruby-2.2.1/gems/rack-1.6.4/lib/rack/methodoverride.rb:27:inmethod_override'/home/pi/.rvm/ gems / ruby-2.2.1 / gems / rack-1.6.4 / lib / rack / methodoverride.rb:15:in call'/home/pi/.rvm/gems/ruby-2.2.1/gems/rack-1.6 .4 / lib / rack / runtime.rb:18:incall'/home/pi/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.3/lib/active_support/cache/strategy/local_cache_middleware.rb :28:在电话'/home/pi/.rvm/gems/ruby-2.2.1/gems/rack-1.6.4/lib/rack/lock.rb:17:incall'/home/pi/.rvm/ gems / ruby-2.2.1 / gems / actionpack-4.2.3 / lib / action_dispatch / middleware / static.rb:116:in call'/home/pi/.rvm/gems/ruby-2.2.1/gems/rack -1.6.4 / lib / rack / sendfile.rb:113:incall'/home/pi/.rvm/gems/ruby-2.2.1/gems/railties-4.2.3/lib/rails/engine.rb:518 :在电话'/home/pi/.rvm/gems/ruby-2.2.1/gems/railties-4.2.3/lib/rails/application.rb:165:incall'/home/pi/.rvm/gems/ ruby-2.2.1 / gems / rack-1.6.4 / lib / rack / lock.rb:17:in call'/home/pi/.rvm/gems/ruby-2.2.1/gems/rack-1.6.4 /lib/rack/content_length.rb:15:incall '/home/pi/.rvm/gems/ruby-2.2.1/gems/rack-1.6.4/lib/rack/handler/webrick.rb:88:in service'/home/pi/.rvm/rubies/ ruby-2.2.1 / lib / ruby / 2.2.0 / webrick / httpserver.rb:138:inservice'/home/pi/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/ httpserver.rb:94:运行'/home/pi/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/server.rb:294:inblock in start_thread'

当它工作时:

tag_multipart_encoding(filename,content_type,name)中的数据:

Megadeth Set.png
图像/ PNG
上传文件[]
tmp1.txt
纯文本/
上传文件[]

日志:

在2015-11-15 08:12:58 0530开始发布“/ upload”for 192.168.1.2无法从192.168.1.2渲染控制台!允许的网络:127.0.0.1,:: 1,127.0.0.0/127.255.255.255由HomeController处理#upload作为HTML参数:{“fileUpload”=> [#,@ original_filename =“Megadeth Set.png”,@ content_type =“ image / png“,@ headers =”Content-Disposition:form-data; name = \“fileUpload [] \”; filename = \“Megadeth Set.png \”\ r \ nConContent-Type:image / png \ r \ nContent-Transfer-Encoding:binary \ r \ n“>,#,@ original_filename =”tmp1.txt“,@ content_type =”text / plain“,@ headers =”Content-Disposition:form-data; name = \“ fileUpload [] \“; filename = \”tmp1.txt \“\ r \ nConContent-Type:text / plain \ r \ nContent-Transfer-Encoding:binary \ r \ n”>]}