Description:
returns correct content type for task description download
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r273:0e765be64abb - - 1 file changed: 7 inserted, 1 deleted

@@ -10,45 +10,51
10 10 @problems = Problem.find_available_problems
11 11 @user = User.find(session[:user_id])
12 12 end
13 13
14 14 def view
15 15 base_name = params[:file]
16 16 if !check_user_viewability(base_name)
17 17 redirect_to :action => 'index' and return
18 18 end
19 19
20 20 base_filename = File.basename("#{base_name}.#{params[:ext]}")
21 21 filename = "#{Problem.download_file_basedir}/#{base_filename}"
22 22
23 23 if !check_user_viewability(base_name) or !FileTest.exists?(filename)
24 24 redirect_to :action => 'index' and return
25 25 end
26 26
27 27 if defined?(USE_APACHE_XSENDFILE) and USE_APACHE_XSENDFILE
28 28 response.headers['Content-Type'] = "application/force-download"
29 29 response.headers['Content-Disposition'] = "attachment; filename=\"#{File.basename(filename)}\""
30 30 response.headers["X-Sendfile"] = filename
31 31 response.headers['Content-length'] = File.size(filename)
32 32 render :nothing => true
33 33 else
34 - send_file filename, :stream => false, :filename => base_filename
34 + if params[:ext]=='pdf'
35 + content_type = 'application/pdf'
36 + else
37 + content_type = 'application/octet-stream'
38 + end
39 +
40 + send_file filename, :stream => false, :filename => base_filename, :type => content_type
35 41 end
36 42 end
37 43
38 44 protected
39 45
40 46 def check_viewability
41 47 @user = User.find(session[:user_id])
42 48 if @user==nil or !Configuration.show_tasks_to?(@user)
43 49 redirect_to :controller => 'main', :action => 'list'
44 50 return false
45 51 end
46 52 end
47 53
48 54 def check_user_viewability(filename)
49 55 # individual file access control shall be added here
50 56 return false if not @user
51 57 return Configuration.show_tasks_to?(@user)
52 58 end
53 59
54 60 end
You need to be logged in to leave comments. Login now