2

ImageResizerであるRubyアプリがあります。これを行うためにRMagickgemを使用します。アプリはユーザーにファイルをアップロードするように求め、ファイルのサイズを変更して、新しく生成されたファイルを保存します。

Sinatraはデフォルトで、アップロードされたすべてのファイルを「uploads」ディレクトリに配置し、新しく生成されたファイルもそこに保存されているようです。これはデフォルトの動作であると想定しており、これを変更する方法はわかりませんが、現時点ではすぐに問題になるわけではありません(ただし、これを行う方法を知っていれば、それもありがたいです)。

さて、ファイルが正しく生成された後に表示される「success.haml」ページで、新しく生成された画像を単純なimgタグで表示しようとしています。ファイルへのパスは@filepathにあるので、私が行ったとき:

%img(src=@filepath)

レンダリングされたHTML(Firebugを使用して検査した場合)は正しく表示されます

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

そして、このファイルは確かに私のフォルダ構造に存在します。ただし、画像が壊れているように見えます。

この問題を克服する方法について何かアイデアはありますか?

ありがとうございました。

4

1 に答える 1

5

相対URL(uploads/filename.jpg)は、Webルートに相対的であるため、このように呼ばれます。シナトラでは、これはパブリックフォルダです。デフォルトでは、アプリディレクトリにあり、と呼ばれpublicます。しかし、それを上書きすることができます。

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

したがって、アップロードをインターネットに表示するには、それらをパブリックフォルダに配置します。

Sinatraの設定とカスタマイズの詳細については、こちらをお読みください。

于 2012-07-04T14:55:27.643 に答える