gpt4 book ai didi

ruby-on-rails - 如何查看数据库中编码(如 base64)的 pdf 文件?

转载 作者:行者123 更新时间:2023-11-29 12:13:31 26 4
gpt4 key购买 nike

我目前在 heroku 上有一个站点,并且正在使用 postgreSQL。当我将 pdf 文件上传到数据库时,我将它们编码为 base64 并将它们保存为文本。我可以单击链接解码文件并毫无问题地下载它;但是,我在一个页面上遇到了问题,其中有一个带有 pdf 文件的 iframe。如何将新解码的文件提供给 iframe?即使没有 iframe,我如何才能解码文件并将其作为页面?

我想我可以创建一个 pdf Controller ,解码文件并显示打开文件,但我什至无法让它工作。

感谢您的帮助!

编辑:这是我目前所拥有的。

def create
@course = Course.find(params[:note][:id])
params[:note][:content].tempfile = Base64.encode64(open(params[:note][:content].tempfile).to_a.join)
params[:note][:filename] = params[:note][:content].original_filename
params[:note][:contenttype] = params[:note][:content].content_type
@note = @course.notes.build(:content => params[:note][:content].tempfile, :filename => params[:note][:filename],
:contenttype => params[:note][:contenttype])
if @note.save
flash[:success] = "File Uploaded!"
redirect_to root_path
end

这会毫无问题地将文件保存为 base64。不过,我对下一部分不太确定。

def show
@note = Note.find(params[:id])
@notecon = @note.content
decoded_data=Base64.decode64(@notecon)
file_name = "test"
@temp_file = Tempfile.new("filename-#{Time.now}")
File.open(@temp_file, 'wb') {|f| f.write(decoded_data)}
end

现在,在 View 中,我不知道将什么作为文件路径。

<iframe src="http://docs.google.com/gview?url=http://localhost:3000/app/views/notes/test&embedded=true" 
style="width:718px; height:700px;" frameborder="0"></iframe>

我什至不知道如何发布保存在我的驱动器上的 pdf 文件。再次感谢!

最佳答案

你可以使用

send_data 

Action Controller 中的方法将文件发送到浏览器。您需要设置内容类型、浏览器的显示方式等。

send_data(@pdf, :type => 'application/pdf', :filename => "myfile.pdf", :disposition => "inline"

:deposition=>'inline' 指示浏览器在浏览器内部显示。

你可以在这里找到类似的例子,他们将图像上传到数据库

http://over9000.org/rails/saving-ruby-on-rails-attachments-as-blobs

https://gist.github.com/macek/610596

Rails: Storing binary files in database

考虑将 pdf 存储到 Amazon S3 存储桶或其他云存储中。 PaperClip gem 可以透明地为您完成。 https://github.com/thoughtbot/paperclip .回形针也可以保存到数据库。

如果您仍然打算使用数据库存储,请注意它的缺点 Rails: Storing binary files in database

关于ruby-on-rails - 如何查看数据库中编码(如 base64)的 pdf 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18136255/

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