【问题标题】:Rails send_data using Rmagick image.to_blob not workingRails send_data 使用 Rmagick image.to_blob 不起作用
【发布时间】:2015-08-06 02:16:02
【问题描述】:

我的应用程序根据对象的属性(品牌、型号等)创建自定义标签,并将它们成功保存到服务器。我正在尝试将其直接发送到浏览器的send_data 图像(使用to_blob),以便用户可以立即打开并打印图像,而不是先将其保存到服务器。我在发送到浏览器部分时遇到了很多麻烦。

我正在使用 Rails (4.0.0) 和 rmagick (2.13.4)。如果我可以分享任何其他信息,请告诉我。代码如下:

VIEW

<%= link_to fa_icon('qrcode', text: 'Print'),
    labels_path(@warranty_item.qr_code, { format: :png }), 
    method: :post, remote: true, class: 'btn btn-xs btn-warning' %>

CONTROLLER

require 'rmagick'

def create
  respond_to do |format|
    format.png do
      @img = Magick::Image.new(280, 100) { self.background_color = blue' }
      @img.format = 'png'
      @img_blob = @img.to_blob

      send_data @img_blob, filename: 'test_label.png', disposition: 'inline', type: 'image/png'
    end
  end
end

在 Rails 的日志中,这很顺利;没有错误,没有警告,只有一个:Sent data test_label.png (0.7ms)

如果我在 Rails 控制台中运行@img.to_blob,它会给我这个:

"\x89PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x01 \x00\x00\x00$\x01\x03\x00\x00\x00\x13\xABua\x00\x00\x00\x04gAMA\x00\x00\xB1\x8F\v\xFCa\x05\x00\x00\x00 cHRM\x00\x00z&\x00\x00\x80\x84\x00\x00\xFA\x00\x00\x00\x80\xE8\x00\x00u0\x00\x00\xEA`\x00\x00:\x98\x00\x00\x17p\x9C\xBAQ<\x00\x00\x00\x06PLTE\x00\x00\xFF\xFF\xFF\xFF{\xDC\x99,\x00\x00\x00\x01bKGD\x00\x88\x05\x1DH\x00\x00\x00\x14IDAT8\xCBc`\x18\x05\xA3`\x14\x8C\x82Q@,\x00\x00\x054\x00\x01\xEA\xAF\x9B \x00\x00\x00\x00IEND\xAEB`\x82"

但是,如果我使用记录器,Rails.logger.info @img.to_blob 它会给我这个:

�PNG

IHDR $�uagAMA��
           �a  cHRMz&�����u0�`:�p��Q<PLTE����{ܙ,bKGD�HIDAT8�c`�`��Q@,4ꯛ IEND�B`�

就像我上面提到的,如果我只是保存图像@img.write('test_label.png'),它就可以完美运行。我究竟做错了什么?我错过了什么?代码执行,在控制台中测试它可以工作,但它不会将图像数据发送到用户的浏览器/下载文件,以便他们可以打开它。请帮忙!

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 imagemagick rmagick


    【解决方案1】:

    它无法工作。您与 'remote: true' 的链接是一个 ajax 请求。您无法从 JS 将图像下载到磁盘。这是一个安全问题。

    在这里阅读:enter link description here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多