class Rack::Multipart::Generator

def flattened_params

def flattened_params
  @flattened_params ||= begin
    h = Hash.new
    @params.each do |key, value|
      k = @first ? key.to_s : "[#{key}]"
      case value
      when Array
        value.map { |v|
          Multipart.build_multipart(v, false).each { |subkey, subvalue|
            h["#{k}[]#{subkey}"] = subvalue
          }
        }
      when Hash
        Multipart.build_multipart(value, false).each { |subkey, subvalue|
          h[k + subkey] = subvalue
        }
      else
        h[k] = value
      end
    end
    h
  end
end