我正在开发一个Ruby on Rails应用程序需要的文件上传/下载。 对于上传的部分我用的宝石carrierwave因为它非常容易使用和灵活。 问题是:一旦我上传的文件,我需要知道的几件事:即,如果它是不是下载我展示它内嵌文件的PDF版本,和同样的图像。 我如何获得的文件扩展名 ,我怎么能做到这一点的文件发送给用户? 任何反馈表示赞赏谢谢!
Answer 1:
确定文件的扩展名(我想为安装上传的名称为“文件”):
file = my_model.file.url
extension = my_model.file.file.extension.downcase
然后准备哑剧和处置瓦尔:
disposition = 'attachment'
mime = MIME::Types.type_for(file).first.content_type
if %w{jpg png jpg gif bmp}.include?(extension) or extension == "pdf"
disposition = 'inline'
end
(如果你想添加其他扩展名)。
然后发送文件:
send_file file, :type => mime, :disposition => disposition
Answer 2:
一旦你已经上传的文件,名称存储在数据库中。 这也包括扩展名。 假设你有一个User
与安装为上传模型asset
,那么你就可以得到它:
user.asset.file.extension
至于它发送给用户,如果你调用user.asset_url
,它会给你在文件上传的URL。 用户可以使用该链接来获取文件。 还是我误解你的“发送文件到用户”是什么意思?
文章来源: Carrierwave how to get the file extension