2016-12-28 13 views
0

Я использую Rails 5. Я храню данные файла и тип mime в базе данных PostGres. Затем я используюКак получить расширение «.doc» с учетом типа mime «application/msword» в Rails?

extension = Rack::Mime::MIME_TYPES.invert[mime_type] 

, чтобы получить расширение файла, когда я возвращаю данные в файл пользователю. Однако, если мой тип мима является

application/msword 

Вышеприведенными возвращается «.dot», и я вижу это вызывает путаницу с моей неискушенной базой пользователей, потому что они более привычны расширением «.doc». Есть ли другой тип mime, который я могу использовать, который вернет расширение «.doc» или другую функцию, которую я могу использовать для преобразования типов mime?

ответ

0

".dot" расширение файла имеет такой же тип mime, что означает слово microsoft template.

Все типы mime сортируются в алфавитном порядке, и вам всегда нужно возвращаться первым. Нравится

Rack::Mime::MIME_TYPES.rassoc(mime_type).try(:first) 
0

Попробуйте это gem, что позволит вам создавать текстовые документы из HTML.

Согласно их документу,

Для htmltoword версии> = 0.2 Контроллер визуализатор действие было определено, так что нет никакой необходимости объявлять тип пантомимы, и вы можете просто ответить на .docx формат. Затем он будет выглядеть для представлений с расширением .docx.erb, который предоставит HTML-код, который будет отображаться в файле Word.

# On your controller. 
respond_to :docx 

# filename and word_template are optional. By default it will name the file as your action and use the default template provided by the gem. The use of the .docx in the filename and word_template is optional. 
def my_action 
    # ... 
    respond_with(@object, filename: 'my_file.docx', word_template: 'my_template.docx') 
    # Alternatively, if you don't want to create the .docx.erb template you could 
    respond_with(@object, content: '<html><body>some html</body></html>', filename: 'my_file.docx') 
end 

def my_action2 
    # ... 
    respond_to do |format| 
    format.docx do 
     render docx: 'my_view', filename: 'my_file.docx' 
     # Alternatively, if you don't want to create the .docx.erb template you could 
     render docx: 'my_file.docx', content: '<html><body>some html</body></html>' 
    end 
    end 
end 

 Смежные вопросы

  • Нет связанных вопросов^_^