- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在使用 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/
我是一名优秀的程序员,十分优秀!