繁体   English   中英

将Carrierwave附件编码到Rails中的base64

[英]Encode Carrierwave attachment to base64 in Rails

我正在使用Carrierwave gem将附件上传到我的模型。 我使用mapper附件插件添加了elasticsearch,以允许对附件进行全文搜索。

Carrierwave和elasticsearch工作正常,但为了使全文搜索工作,我需要将附件编码为base64。

我已经按照本教程( http://rny.io/rails/elasticsearch/2013/08/05/full-text-search-for-attachments-with-rails-and-elasticsearch.html )进行了操作,但我认为已有对Rails或Carrierwave进行一些更改,因为我无法使其工作。 具体来说,当我尝试将附件编码为base64时,我收到以下类型错误:

没有将CarrierWave :: SanitizedFile隐式转换为String

错误位于模型的以下行中:

File.open(Base64.encode64(File.read(document.file)))

如果我用一个url将路径替换为实际文件,它可以正常工作。

我搜索了SO,我能找到的唯一相关答案给了我同样的错误: Carrierwave编码文件到base64作为进程

我是一个完整的铁杆新手,希望这对我以外的每个人都很明显,但我们一开始都是初学者,对吧?

谢谢!

CarrierWave的read方法返回文件的内容。 因此,假设Document是您的模型, file是您的上传器属性,这应该工作:

Base64.encode64(document.file.read)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM