diff --git a/app/models/test_request.rb b/app/models/test_request.rb --- a/app/models/test_request.rb +++ b/app/models/test_request.rb @@ -77,6 +77,10 @@ if test_request.input_file_name == nil test_request.errors.add_to_base("No input submitted.") end + if params[:additional_file]!=nil and params[:additional_file]!="" + save_additional_file(params[:additional_file], + "#{test_request.input_file_name}.files") + end end test_request.submitted_at = Time.new test_request.status_inqueue @@ -120,6 +124,25 @@ new_file_name end + def self.save_additional_file(tempfile,dir) + new_file_name = "#{dir}/#{tempfile.original_filename}" + dirname = File.dirname(new_file_name) + FileUtils.mkdir_p(File.dirname(new_file_name)) if !File.exists?(dirname) + + # when the user did not submit any file + return nil if tempfile=="" + + if tempfile.instance_of?(Tempfile) + tempfile.close + FileUtils.move(tempfile.path,new_file_name) + else + File.open(new_file_name, "wb") do |f| + f.write(tempfile.read) + end + end + new_file_name + end + # # validations # diff --git a/app/views/test/index.html.erb b/app/views/test/index.html.erb --- a/app/views/test/index.html.erb +++ b/app/views/test/index.html.erb @@ -57,8 +57,26 @@ Input data: <%= f.file_field :input_file %> - (should be smaller than 2MB) + + + (combined size should not exceed 2MB) + + + + + Additional file*: + + <%= f.file_field :additional_file %> + + + + * This option works only for task max. + You can use this to submit questions.txt.
+ The file shall be copied to the execution directory before your program runs. +
+ + <%= submit_tag 'submit' %>