diff --git a/lib/capybara/driver/rack_test_driver.rb b/lib/capybara/driver/rack_test_driver.rb
index <HASH>..<HASH> 100644
--- a/lib/capybara/driver/rack_test_driver.rb
+++ b/lib/capybara/driver/rack_test_driver.rb
@@ -113,7 +113,7 @@ class Capybara::Driver::RackTest < Capybara::Driver::Base
     def params(button)
       params = {}
 
-      native.xpath(".//input[not(@disabled) and (not(@type) or (@type!='radio' and @type!='checkbox' and @type!='submit' and @type!='image'))]").map do |input|
+      native.xpath(".//input[not(@disabled) and (not(@type) or (@type!='radio' and not(@type='file' and @multiple) and @type!='checkbox' and @type!='submit' and @type!='image'))]").map do |input|
         merge_param!(params, input['name'].to_s, input['value'].to_s)
       end
       native.xpath(".//textarea[not(@disabled)]").map do |textarea|
We need to exclude file inputs with multiple (HTML5) i.e. <input type='file' name='image[file][]' multiple /> from this check because it will cast the value to_s which totally kills file uploads when inside an array (array is required for multiple files).