在我的Ruby On Rails项目中(但这并不重要), 当我加载一个html页面时,我需要解密一个图像(jpg)并在网页中显示它: 在页面请求之后,图像被解密,文件在服务器磁盘上写入,因此浏览器可以显示图像。
我不想在服务器上写图像,但我希望动态加密图像 !
我认为ajax(jquery)可能会有所帮助,但我不知道如何动态使用它(没有在磁盘上写入图像)。
你有什么想法吗?
谢谢你, 的Alessandro答案 0 :(得分:2)
执行此操作的唯一方法是data URI scheme.
它允许您直接将图像数据嵌入src
元素的<img>
属性。
然而,它有其局限性:它在IE中根本不起作用&lt; 8,IE 8中的大小限制为32k。
Here是一篇声称为IE提供解决方法的文章。 8(尚未测试)
答案 1 :(得分:2)
您可以使用send_data
代替呈现网页。看看here。通过这种方式,您可以生成文件并将其发送而无需保存到磁盘。但是,不会呈现正常页面。但你可以像这样使用它:
1.创建正常的html视图,例如索引操作:
# controller
def index
@some_resources = SomeResources.all # just whatever you need
end
# somewhere in index.html.erb view
<img src="rendered_images/my_rendered_image.jpg" />
2.添加rendered_images
# routes
match "rendered_images/:filename" => "application#render_image"
3.在应用程序控制器中添加渲染图像动作
# application controller
def render_image
send_data my_function_to_generate_file, :filename => params[:filename], :type => 'image/jpeg', :disposition => :inline
end
我还没有测试过。我希望它会给你一些开始的东西!