これはかなり簡単ですが、私はそれを動作させることはできません。画像をレンダリングする
私は、クエリに基づいて画像を見つけるコントローラメソッドを持っています。そして、出力はキャッシュに入れられます。画像はリモート(フリッカー、グーグル画像など)であったり、ローカルであったりする可能性があります。ソースに関係なく、イメージファイルの内容を取得してユーザーに渡すだけです。本質的には、プロキシです。リモート画像を通すことはうまくいくようですが、ローカル画像を通過すると、私には次のように伝えられます:
invalid byte sequence in UTF-8
私は誰かが問題を解決したり、私のコードでより良い方向に私を導くことを望んでいます。
def image_proxy
query = params[:query]
image_url = get_image_url(query) # returns an absolute local file path or a URL
response.headers['Cache-Control'] = "public, max-age=#{12.hours.to_i}"
response.headers['Content-Type'] = 'image/jpeg'
response.headers['Content-Disposition'] = 'inline'
render :text => open(image_url).read
end
ローカルファイルは正常に動作しません。この他の問題を解決することができます誰にでも
ボーナス:
- は、私は適切なコンテンツタイプを設定する必要があります。リモートイメージURLはイメージタイプを教えてくれません。私はただURLを取得し、URLには拡張子が含まれないことがあります。だから私はjpegを選んだので、それは私に送られた画像の種類に関係なく動作するようだ。
ありがとう!
偉大な答え、完璧に働いた。 –