From ca113aa1f3b68faeef99d6e7ad7d42224d90a2f2 Mon Sep 17 00:00:00 2001 From: Bryan Ash Date: Mon, 12 Jan 2009 23:37:05 -0500 Subject: [PATCH] Explicitly read as binary in multipart_body for Windows --- actionpack/lib/action_controller/integration.rb | 2 +- .../request/multipart_params_parsing_test.rb | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletions(-) diff --git a/actionpack/lib/action_controller/integration.rb b/actionpack/lib/action_controller/integration.rb index ded72a7..a3e22ca 100644 --- a/actionpack/lib/action_controller/integration.rb +++ b/actionpack/lib/action_controller/integration.rb @@ -513,7 +513,7 @@ module ActionController def multipart_body(params, boundary) multipart_requestify(params).map do |key, value| if value.respond_to?(:original_filename) - File.open(value.path) do |f| + File.open(value.path, "rb") do |f| f.set_encoding(Encoding::BINARY) if f.respond_to?(:set_encoding) <<-EOF diff --git a/actionpack/test/controller/request/multipart_params_parsing_test.rb b/actionpack/test/controller/request/multipart_params_parsing_test.rb index 03ab164..c0f1fa3 100644 --- a/actionpack/test/controller/request/multipart_params_parsing_test.rb +++ b/actionpack/test/controller/request/multipart_params_parsing_test.rb @@ -118,6 +118,14 @@ class MultipartParamsParsingTest < ActionController::IntegrationTest end end + test "uploads and reads a binary file in windows" do + with_test_routing do + fixture_file = FIXTURE_PATH + "/mona_lisa.jpg" + post '/read', :uploaded_data => fixture_file_upload(fixture_file, "image/jpg") + assert_equal 'File: '.length + File.size(fixture_file), response.content_length + end + end + # The lint wrapper is used in integration tests # instead of a normal StringIO class InputWrapper = Rack::Lint::InputWrapper -- 1.5.6.1.1071.g76fb