在 Rails 中将 Carrierwave 附件编码为 base64
Encode Carrierwave attachment to base64 in Rails
我正在使用 Carrierwave gem 将附件上传到我的模型。我添加了带有映射器附件插件的 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 时,出现以下类型错误:
no implicit conversion of CarrierWave::SanitizedFile into String
错误在模型的以下行中:
File.open(Base64.encode64(File.read(document.file)))
如果我用 url 替换实际文件的路径,它工作正常。
我已经搜索过了,我能找到的唯一相关答案给了我同样的错误:Carrierwave encode file to base64 as process
我是一个完整的 rails 新手,希望这对除我之外的每个人来说都是显而易见的,但我们一开始都是初学者,对吧?
谢谢!
CarrierWave 的read
方法returns 文件的内容。所以假设 Document
是你的模型并且 file
是你的上传者属性,这应该有效:
Base64.encode64(document.file.read)
我正在使用 Carrierwave gem 将附件上传到我的模型。我添加了带有映射器附件插件的 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 时,出现以下类型错误:
no implicit conversion of CarrierWave::SanitizedFile into String
错误在模型的以下行中:
File.open(Base64.encode64(File.read(document.file)))
如果我用 url 替换实际文件的路径,它工作正常。
我已经搜索过了,我能找到的唯一相关答案给了我同样的错误:Carrierwave encode file to base64 as process
我是一个完整的 rails 新手,希望这对除我之外的每个人来说都是显而易见的,但我们一开始都是初学者,对吧?
谢谢!
CarrierWave 的read
方法returns 文件的内容。所以假设 Document
是你的模型并且 file
是你的上传者属性,这应该有效:
Base64.encode64(document.file.read)