gpt4 book ai didi

ruby-on-rails - 有没有办法检查 Ruby 变量是否包含二进制数据?

转载 作者:数据小太阳 更新时间:2023-10-29 06:47:00 26 4
gpt4 key购买 nike

我正在使用 Ruby 2.4 和 Rails 5。我在名为“content”的变量中有文件内容。内容可能包含来自 PDF 文件、Word 文件或 HTML 文件之类的数据。有什么办法可以判断变量是否包含二进制数据?最后,我想知道这是 PDF、Microsoft Office 还是其他类型的 OpenOffice 文件。这个答案——Rails: possible to check if a string is binary? -- 建议我可以检查变量的编码

content.encoding

它会产生

ASCII-8BIT

然而,在二进制数据的情况下,我注意到有些情况下存储在变量中的 HTML 内容也可能返回“ASCII-8BIT”作为 content.encoding,因此使用“content.encoding”不是告诉我是否有二进制数据的万无一失的方法。这种方式是否存在,如果存在,它是什么?

最佳答案

如果您真正的问题不是关于二进制数据本身,而是关于确定数据的文件类型,我建议您查看 ruby-filemagic gem这将为您提供更可靠的信息。 gem 是 libmagic 库的简单包装器,它是类 unix 系统的标准。该库的工作原理是扫描文件的内容并将其与各种文件类型中的一组已知“魔术”模式进行匹配。

字符串缓冲区的示例用法(例如,从数据库读取数据):

require "ruby-filemagic"

content = File.read("/.../sample.pdf") # just an example to get some data

fm = FileMagic.new
fm.buffer(content)
#=> "PDF document, version 1.4"

要使 gem 工作(并编译),您需要 file 实用程序以及安装在系统上的带有 header 的 magic 库。引用自述文件:

The file(1) library and headers are required:

Debian/Ubuntu:: +libmagic-dev+
Fedora/SuSE:: +file-devel+
Gentoo:: +sys-libs/libmagic+
OS X:: brew install libmagic

经测试在 Rails 5 下运行良好。

关于ruby-on-rails - 有没有办法检查 Ruby 变量是否包含二进制数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43768031/

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