【发布时间】:2010-12-28 12:56:12
【问题描述】:
我在 Heroku 中有一个应用程序,为此我需要简单的文件存储来存储上传的图像 通过 attachment_fu 插件使用 send_data。 之后我用 tmp/ 目录写了这个文件,想在浏览器上显示,但是这些文件没有在浏览器中显示。 如何在浏览器上显示这些图像?
存储和检索图像的替代解决方案是什么?
谢谢!
【问题讨论】:
标签: heroku attachment-fu
我在 Heroku 中有一个应用程序,为此我需要简单的文件存储来存储上传的图像 通过 attachment_fu 插件使用 send_data。 之后我用 tmp/ 目录写了这个文件,想在浏览器上显示,但是这些文件没有在浏览器中显示。 如何在浏览器上显示这些图像?
存储和检索图像的替代解决方案是什么?
谢谢!
【问题讨论】:
标签: heroku attachment-fu
您不能在 Heroku 上存储上传的文件。
您必须使用替代策略。几种替代策略:
将上传的文件存储在 Heroku 的数据库中。由于数据库系统并未专门针对存储文件进行优化,因此您应该在使用此策略之前测试您的应用程序在负载下的性能。
将上传的文件存储在外部存储服务中。 Amazon S3 是一种流行的云存储服务,任何人都可以使用,它与 Heroku 一样具有按需付费定价。 (事实上,Heroku 本身运行在亚马逊的另一个云服务 EC2 之上。)
【讨论】:
send_data @record_with_image.raw_image_data, :type => 'application/png'之类的东西。但是您不能将文件永久存储在 Heroku 的磁盘上,也不能制作临时文件然后将临时文件直接提供给用户。您必须使用 Rack 堆栈渲染文件或使用某些外部服务存储文件。