gpt4 book ai didi

ruby-on-rails - 在Rails中将Carrierwave附件编码为base64

转载 作者:行者123 更新时间:2023-12-03 00:13:21 32 4
gpt4 key购买 nike

我正在使用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时,出现以下类型错误:

no implicit conversion of CarrierWave::SanitizedFile into String



错误在模型的以下行中:
File.open(Base64.encode64(File.read(document.file)))

如果我将路径替换为实际文件的url,则可以正常工作。

我已经搜索了SO,唯一可以找到的相关答案也给了我相同的错误: Carrierwave encode file to base64 as process

我是一个完全的Rails新手,希望这对除了我以外的所有人来说都是显而易见的,但是起初我们都是初学者,对吗?

谢谢!

最佳答案

CarrierWave的read方法返回文件的内容。因此,假设Document是您的模型,而file是您的上载器属性,则应该可以使用:

Base64.encode64(document.file.read)

关于ruby-on-rails - 在Rails中将Carrierwave附件编码为base64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38859311/

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