Let the attachment filename be specified on upload (#12125).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10678 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2012-10-18 21:06:35 +00:00
parent 79c1ec7adc
commit 251f263abd
2 changed files with 13 additions and 1 deletions

View File

@ -84,7 +84,7 @@ class AttachmentsController < ApplicationController
@attachment = Attachment.new(:file => request.raw_post) @attachment = Attachment.new(:file => request.raw_post)
@attachment.author = User.current @attachment.author = User.current
@attachment.filename = Redmine::Utils.random_hex(16) @attachment.filename = params[:filename].presence || Redmine::Utils.random_hex(16)
if @attachment.save if @attachment.save
respond_to do |format| respond_to do |format|

View File

@ -117,6 +117,18 @@ class ApiTest::AttachmentsTest < ActionController::IntegrationTest
assert_equal token, attachment.token assert_equal token, attachment.token
end end
test "POST /uploads.xml should accept :filename param as the attachment filename" do
set_tmp_attachments_directory
assert_difference 'Attachment.count' do
post '/uploads.xml?filename=test.txt', 'File content', {"CONTENT_TYPE" => 'application/octet-stream'}.merge(credentials('jsmith'))
assert_response :created
end
attachment = Attachment.order('id DESC').first
assert_equal 'test.txt', attachment.filename
assert_match /_test\.txt$/, attachment.diskfile
end
test "POST /uploads.xml should not accept other content types" do test "POST /uploads.xml should not accept other content types" do
set_tmp_attachments_directory set_tmp_attachments_directory
assert_no_difference 'Attachment.count' do assert_no_difference 'Attachment.count' do