我有一个Ruby应用程序,它是一个Image Resizer。它使用RMagick gem来做到这一点。该应用程序要求用户上传文件,然后调整其大小并保存新生成的文件。
似乎Sinatra默认将所有上传的文件放入'uploads'目录,新生成的文件似乎也保存在那里。我假设这是默认行为,不知道如何改变这一点,但目前这不是一个直接的问题(虽然如果你知道如何做到这一点,也会受到赞赏)。
现在,在正确生成文件后显示的'success.haml'页面中,我试图用简单的img标签显示新生成的图像。该文件的路径位于@filepath中,所以当我这样做时:
%img(src=@filepath)
呈现的HTML(使用Firebug检查时)正确显示
<img src="uploads/filename.jpg">
这个文件确实存在于我的文件夹结构中。但是,图像看起来很破碎。
关于如何克服这个问题的任何想法?
谢谢。
答案 0 :(得分:5)
相对URL(uploads/filename.jpg
)被调用,因为它们与Web根相对。在Sinatra中,这是公用文件夹。默认情况下,它位于您的app目录中并被称为public
。但你可以覆盖它。
set :public_folder, 'my_root' # this will make my_root dir the web root.
因此,要使您的上传内容对互联网可见,请将它们放入公用文件夹。
Read this了解更多Sinatra设置和自定义。