send_data没有正确发送png数据

时间:2014-03-01 17:14:27

标签: ruby-on-rails svg png

我正在开发一个创建动态svg图像的Rails站点,并允许用户将他们制作的图像下载为png文件。我在视图中有一个按钮,它发布到控制器中的下载方法。我的第一个问题是它没有在@Circuit中获取svg数据集,但我现在将其设置为读取一个带有svg的文件。

使用该图像,它会下载一个png文件,但它不到1k,并且在尝试查看时无法正常打开。我已经测试过将图像写入本地服务器上的文件并且它正常工作,图像打开正确,因此问题必须与我send_data设置

的方式相同
 def download
   before = Magick::Image.read("circuit.png").first {format="png"}
   blob = before.to_blob
   png = Magick::Image.from_blob(blob)
   # png = Magick::Image.from_blob(@Circuit)
   # send_data png[0], :type => 'image/png', :disposition => 'attachment'

   # test Magick::Image
   # png[0].write("circuit-download.png")

   #test send_data
   test='<body>Hello World</body>'
   send_data test, :type => 'text/html', :disposition => 'inline'
 end

1 个答案:

答案 0 :(得分:0)

无法让它在@Circuit中使用svg,但是我已经能够将@Circuit的内容保存为svg文件,然后转换为png文件并下载:

def download

 img=Magick::Image.read("circuit.svg").first {format="svg"}
 img.format = 'PNG'
 send_data img.to_blob ,type: "image/png" , disposition: "attachment"
 end