gpt4 book ai didi

ruby-on-rails - 当 FileMagic 不是一个选项时,我如何可靠地确定文件类型?

转载 作者:行者123 更新时间:2023-12-03 17:34:49 27 4
gpt4 key购买 nike

我使用的是 Rails 5.0.3。如何在不依赖文件扩展名的情况下可靠地确定文件类型(这是来 self 计算机上的文件,而不是我刚从 Internet 下载的文件)?我想要一种跨平台的方式来做到这一点,只是因为我使用 Mac 进行开发,使用 Linux 进行测试/生产。此外,由于此错误,gem file magic 不是一个选项

Bundler could not find compatible versions for gem "rails":
In Gemfile:
rails (~> 5.0.1)

filemagic was resolved to 0.3.5.0, which depends on
rails (< 5, >= 4.2.0)

最佳答案

filemagic不是你要找的 gem 。这似乎是某人的项目,不打算供公众使用(rubygems 页面链接到一家公司的网站,并且没有可用的源代码)。

相反,安装 ruby-filemagic gem 。这是 sourcedocumentation .我们可以像这样使用库:

begin
fm = FileMagic.new(FileMagic::MAGIC_MIME)
puts fm.file("foo.txt", true)
ensure
fm.close
end

...或者使用 open() 辅助方法,它会自动为我们关闭资源:

FileMagic.open(FileMagic::MAGIC_MIME) { |fm| puts fm.file("foo.txt", true) }

这也适用于另一个助手 mime(),它另外为我们设置标志:

FileMagic.mime { |fm| puts fm.file("foo.txt", true) }

这个 gem 依赖于 libmagic ,一个用于使用文件的 magic number 识别文件类型的库. file命令,通常在 Unix/Linux 系统上找到,使用相同的库:

$ file --mime-type foo.txt
foo.txt: text/plain

我们还可以从 Ruby 应用程序调用此命令来获取文件的 MIME 类型:

IO.popen(["file", "--mime-type", "--brief", "foo.txt"]) { |io| puts io.read.chomp }

MimeMagic是 FileMagic 的替代品。

关于ruby-on-rails - 当 FileMagic 不是一个选项时,我如何可靠地确定文件类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47129321/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com