我正在使用Rails 5.我将文件数据和mime类型存储在PostGres数据库中。然后我用
extension = Rack::Mime::MIME_TYPES.invert[mime_type]
在将文件中的数据返回给用户时获取文件扩展名。但是,如果我的mime类型是
application/msword
上面的内容返回“.dot”,我认为这会导致与我不熟练的用户群混淆,因为它们更习惯于“.doc”扩展名。我可以使用不同的mime类型,它会返回“.doc”扩展名或者我可以用来转换mime类型的不同函数吗?
答案 0 :(得分:1)
“。dot”文件扩展名具有相同的mime类型,它表示单词microsoft template。
所有mime类型都按字母顺序排序,您需要始终先返回。喜欢这个
Rack::Mime::MIME_TYPES.rassoc(mime_type).try(:first)
答案 1 :(得分:0)
试试这个gem,你可以用HTML创建word文档。
根据他们的文件,
对于htmltoword版本> = 0.2已定义动作控制器渲染器,因此无需声明mime类型,您只需响应.docx格式即可。然后它会查看扩展名为.docx.erb的视图,它将提供将在Word文件中呈现的HTML。
# 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