加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 22:28:34 所属栏目:百科 来源:网络整理
导读:我使用的是 Ruby 2.4和Rails 5.我有一个名为“content”的变体的文件内容.内容可能包含PDF文件,Word文件或HTML文件等数据.有没有办法判断变量是否包含二进制数据?最终,我想知道这是否是PDf,Microsoft Office或其他类型的OpenOffice文件.这个答案 – Rails:
我使用的是 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"

要使宝石工作(并编译),您需要文件实用程序以及您的系统上安装了标题的魔术库.从自述中引用:

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下运行良好.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读