ruby-on-rails - 在新标签 Rails 中显示 base64 编码数据
问题描述
我收到一个 base64 格式的 PDF 文件。我想在新标签中显示它。我试过这个 -
这是我将数据发送回浏览器的控制器代码
send_data Base64.decode64(params[:base64_file]), :type => 'application/pdf', :filename => "#{params[:name]}.pdf", :disposition => "inline"
查看文件 :
<a href='<%= show_pdf_url({:pdf_body => pdf_body, :name => "download.pdf" %>' target='_blank'>
但它会引发“请求实体太大”错误。
试图将其更改为发布请求 -
<a href='#' class='pdf-download'/>
并调用 -
$('.pdf-download').on('click', function(event){
var get_all_admin = jQuery(this);
var w = window.open('about:blank');
w.document.body.appendChild(w.document.createElement('iframe')).src = 'data:application/octet-stream;base64,${get_all_admin.data("base64_file")}';
但它什么也不做,最终在新标签中加载相同的页面。
帮帮我,我被困在这里了。
解决方案
所以,我最终使用了这个——我没有尝试将它附加到新的 iFrame,而是将输出写入 iFrame。我真的希望我能够使用send_data
-
$(document).on('click', '.pdf-download', function(event){
var get_all_admin = jQuery(this);
event.preventDefault();
let pdfWindow = window.open("")
pdfWindow.document.write("<iframe style='position: fixed; top: 0; left: 0;' width='100%' height='100%' src='data:application/pdf;base64, " + encodeURI(get_all_admin.data("base64_file"))+"'></iframe>")
});
get_all_admin 在哪里获取我在我的网址中设置的数据,如下所示 -
<a href='#' data-base64_file='<%=mydoc.body%>' data-name='<%= get_pdf_name(mydoc.id, mydoc.invoice_date) %>' target='_blank' class='pdf-download' >
这里 mydoc 是我在其中获取 Base64 格式的 pdf 文件的输出。
推荐阅读
- database - 在laravel中获取具有计数的外键的不同数据
- laravel - 图片未上传到 laravel 的 Public/Storage/images 中
- javascript - 用户输入名称 JavaScript 输出等于名称中每个字母附加的变量
- c# - 从 c# 更新图像缩略图
- swagger - 如何在 Swagger 中隐藏 ApiModel 类?
- javascript - 从 Vue 应用程序到 OpenId 提供程序的 OpenId 连接库
- javascript - Discord.js - 显示已删除消息的作者及其已删除消息的数量
- django - 如何在python请求中使用'-'添加行
- swiftui - swiftui中如何自定义Picker元素?
- python - 返回两个数组之和的数组