2

画像をダウンロードしてレールのビューに表示しようとしています。

私がダウンロードしたい理由は、URL に私が与えるのがあまり好きではないいくつかの API キーが含まれているためです。

これまでに試した解決策は次のとおりです。

#Model.rb file
def getUrlMethod
   someUrlToAPNGfile = "whatever.png"
   file = Tempfile.new(['imageprependname', '.png'], :encoding => "ascii-8bit")
   file.write(open(data).read)
   return "#{Rails.application.config.action_mailer.default_url_options[:host]}#{file.path}"
end
#This seems to be downloading the image just fine. However the url that is returned does not point to a legal place

開発中、写真の次の URL を取得します。localhost:3000/var/folders/18/94qgts592sq_yq45fnthpzxh0000gn/T/imageprependname20130827-97433-10esqxh.png

その画像リンクは、有用な場所を指していません。

何が間違っているかについての私の理論は次のとおりです。

  1. ユーザーが要求する前に一時ファイルが削除される
  2. URL が間違った場所を指している
  3. URL はルート ファイル内の正当なルートではありません

現在、これらのいずれかを修正する方法を認識していません。何か助けはありますか?


ところで、画像はソースから常に変化するため、表示した後に画像を保存する必要はありません。

4

2 に答える 2

2

次の 2 つのオプションが考えられます。

まず、画像を HTML ドキュメントに直接埋め込み ます。 http://www.techerator.com/2011/12/how-to-embed-images-directly-into-your-html/ http://webcodertools.com/ imagetobase64converter

次に、HTML ドキュメントで、通常どおりイメージ タグを記述します。

<img src="/remote_images/show/whatever.png" alt="whatever" />

次にRemoteImages、画像のリクエストを処理するコントローラーを作成します。アクションshowでは、画像がダウンロードされ、send_dataで返されます。

これらのオプションの両方で一時ファイルを管理する必要はありません。

于 2013-08-28T00:25:11.937 に答える
0

ファイルは、rails アプリケーションの public フォルダー内の任意の場所に保存できます。正しいパスは次のようになり、次のような#{Rails.root}/public/myimages/<image_name>.png URL で参照できますhttp://localhost:3000/myimages/<image_name>.png。これが役立つことを願っています。

于 2013-08-28T00:19:32.023 に答える