2

我有一个 Ruby 应用程序,它是一个 Image Resizer。它使用 RMagick gem 来做到这一点。该应用程序要求用户上传文件,然后调整其大小并保存新生成的文件。

似乎 Sinatra 默认将所有上传的文件放入“上传”目录,并且新生成的文件似乎也保存在那里。我假设这是默认行为,不知道如何更改它,但目前这不是一个直接的问题(尽管如果你知道如何做到这一点,那也将不胜感激)。

现在,在正确生成文件后显示的“success.haml”页面中,我正在尝试使用简单的 img 标签显示新生成的图像。文件的路径在@filepath 中找到,所以当我这样做时:

%img(src=@filepath)

呈现的 HTML(使用 Firebug 检查时)正确显示

<img src="uploads/filename.jpg">

这个文件确实存在于我的文件夹结构中。但是,图像似乎已损坏。

关于如何克服这个问题的任何想法?

谢谢你。

4

1 回答 1

5

uploads/filename.jpg之所以这样称呼相对 url ( ),是因为它们是相对于 Web 根目录的。在 Sinatra 中,这是公用文件夹。默认情况下,它位于您的应用程序目录中并称为public. 但是你可以覆盖它。

set :public_folder, 'my_root' # this will make my_root dir the web root.

因此,要使您的上传内容对 Internet 可见,请将它们放入您的公共文件夹中。

阅读本文以了解更多 Sinatra 设置和自定义。

于 2012-07-04T14:55:27.643 回答