From 957b347b04ab02267e53f411fa1e60d10702235d Mon Sep 17 00:00:00 2001 From: Patrick Gansterer Date: Wed, 11 Oct 2017 01:30:29 +0200 Subject: [PATCH] Ensure correct extension when downloading documents --- .../app/controllers/documents_controller.rb | 6 +----- plugins/documents/app/models/document.rb | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/plugins/documents/app/controllers/documents_controller.rb b/plugins/documents/app/controllers/documents_controller.rb index e249d0e1..d4e688dd 100644 --- a/plugins/documents/app/controllers/documents_controller.rb +++ b/plugins/documents/app/controllers/documents_controller.rb @@ -54,10 +54,6 @@ class DocumentsController < ApplicationController def show @document = Document.find(params[:id]) - filename = @document.name - unless filename.include? '.' - filename += '.' + MIME::Types[@document.mime].first.preferred_extension - end - send_data(@document.data, :filename => filename, :type => @document.mime) + send_data(@document.data, filename: @document.filename, type: @document.mime) end end diff --git a/plugins/documents/app/models/document.rb b/plugins/documents/app/models/document.rb index 35f7fb16..ed864d99 100644 --- a/plugins/documents/app/models/document.rb +++ b/plugins/documents/app/models/document.rb @@ -2,4 +2,19 @@ class Document < ActiveRecord::Base belongs_to :created_by, :class_name => 'User', :foreign_key => 'created_by_user_id' validates_presence_of :data + + def filename + types = MIME::Types[mime] + + if name.include? '.' + types.each do |type| + type.extensions.each do |extension| + return name if name.end_with? ".#{extension}" + end + end + end + + "#{name}.#{types.first.preferred_extension}" + end + end