From 396b3f2befe5d75ac04e732eae195dc6d9d20201 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 25 Nov 2006 19:29:10 +0000 Subject: Dont set default charset if the response is sending a file. Closes #6689 [DHH] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5626 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/lib/action_controller/base.rb | 6 +++++- actionpack/test/controller/send_file_test.rb | 8 ++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) (limited to 'actionpack') diff --git a/actionpack/lib/action_controller/base.rb b/actionpack/lib/action_controller/base.rb index 9b4b729e8d..288e6d2912 100755 --- a/actionpack/lib/action_controller/base.rb +++ b/actionpack/lib/action_controller/base.rb @@ -1087,7 +1087,11 @@ module ActionController #:nodoc: def assign_default_content_type_and_charset response.content_type ||= Mime::HTML - response.charset ||= self.class.default_charset + response.charset ||= self.class.default_charset unless sending_file? + end + + def sending_file? + response.headers["Content-Transfer-Encoding"] == "binary" end def action_methods diff --git a/actionpack/test/controller/send_file_test.rb b/actionpack/test/controller/send_file_test.rb index a4617cbf5a..83590fd73e 100644 --- a/actionpack/test/controller/send_file_test.rb +++ b/actionpack/test/controller/send_file_test.rb @@ -63,6 +63,14 @@ class SendFileTest < Test::Unit::TestCase assert_equal file_data, response.body end + def test_headers_after_send_shouldnt_include_charset + response = process('data') + assert_equal "application/octet-stream", response.headers["Content-Type"] + + response = process('file') + assert_equal "application/octet-stream", response.headers["Content-Type"] + end + # Test that send_file_headers! is setting the correct HTTP headers. def test_send_file_headers! options = { -- cgit v1.2.3