diff --git a/app/controllers/tasks_controller.rb b/app/controllers/tasks_controller.rb --- a/app/controllers/tasks_controller.rb +++ b/app/controllers/tasks_controller.rb @@ -14,15 +14,19 @@ def view base_filename = File.basename("#{params[:file]}.#{params[:ext]}") filename = "#{RAILS_ROOT}/data/tasks/#{base_filename}" + #filename = "/home/ioi/web_grader/data/tasks/#{base_filename}" + #filename = "/home/ioi/web_grader/public/images/rails.png" if !FileTest.exists?(filename) redirect_to :action => 'index' and return end - # ask Apache to send the file --- doesn't quite work... - #response.headers['Content-Type'] = "application/force-download" - #response.headers['Content-Disposition'] = "attachment; filename=\"#{File.basename(filename)}\"" - #response.headers['Content-length'] = File.size(filename) - #response.headers['X-Sendfile'] = filename - #render :nothing => true + + response.headers['Content-Type'] = "application/force-download" + response.headers['Content-Disposition'] = "attachment; filename=\"#{File.basename(filename)}\"" + response.headers["X-Sendfile"] = filename + response.headers['Content-length'] = File.size(filename) + render :nothing => true + + return send_file filename, :stream => false, :filename => base_filename end