mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Add a :url_based_filename => true option to ActionController::Streaming::send_file, which allows URL-based filenames. [Thomas Fuchs]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6142 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
*SVN*
|
||||
|
||||
* Add a :url_based_filename => true option to ActionController::Streaming::send_file, which allows URL-based filenames. [Thomas Fuchs]
|
||||
|
||||
* Fix that FormTagHelper#submit_tag using :disable_with should trigger the onsubmit handler of its form if available [DHH]
|
||||
|
||||
* Fix #render_file so that TemplateError is called with the correct params and you don't get the WSOD. [Rick]
|
||||
|
||||
@@ -29,6 +29,9 @@ module ActionController #:nodoc:
|
||||
# * <tt>:buffer_size</tt> - specifies size (in bytes) of the buffer used to stream the file.
|
||||
# Defaults to 4096.
|
||||
# * <tt>:status</tt> - specifies the status code to send with the response. Defaults to '200 OK'.
|
||||
# * <tt>:url_based_filename</tt> - set to true if you want the browser guess the filename from
|
||||
# the URL, which is necessary for i18n filenames on certain browsers
|
||||
# (setting :filename overrides this option).
|
||||
#
|
||||
# The default Content-Type and Content-Disposition headers are
|
||||
# set to download arbitrary binary files in as many browsers as
|
||||
@@ -59,7 +62,7 @@ module ActionController #:nodoc:
|
||||
raise MissingFile, "Cannot read file #{path}" unless File.file?(path) and File.readable?(path)
|
||||
|
||||
options[:length] ||= File.size(path)
|
||||
options[:filename] ||= File.basename(path)
|
||||
options[:filename] ||= File.basename(path) unless options[:url_based_filename]
|
||||
send_file_headers! options
|
||||
|
||||
@performed_render = false
|
||||
|
||||
@@ -53,6 +53,14 @@ class SendFileTest < Test::Unit::TestCase
|
||||
assert_nothing_raised { response.body.call(response, output) }
|
||||
assert_equal file_data, output.string
|
||||
end
|
||||
|
||||
def test_file_url_based_filename
|
||||
@controller.options = { :url_based_filename => true }
|
||||
response = nil
|
||||
assert_nothing_raised { response = process('file') }
|
||||
assert_not_nil response
|
||||
assert_equal "attachment", response.headers["Content-Disposition"]
|
||||
end
|
||||
|
||||
def test_data
|
||||
response = nil
|
||||
|
||||
Reference in New Issue
Block a user