2017-03-11 5 views
0

目的:IE11およびEdgeの生データから画像をレンダリングします。プロキシを経由してURLを経由してメモリ内のデータにデータを配信

問題:

  • 画像のみRAW画像データを返すAPIへの呼び出しから来ています。
  • イメージデータサービスは内部であり、外部ネットワーク(インターネット)から直接アクセスすることはできません。
  • イメージタグに送信された画像のbase64エンコーディングを使用して他のブラウザでデータをレンダリングすることができますが、このタイプのタグのデータは常に32kbの制限を超えてIEでレンダリングされません。

質問:私のRailsアプリで 、そのような<img src='http://my-rails-app-server.com/images/123'>として、私は私のRailsアプリケーションサーバーへのURLを構築し、イメージタグでそれを使用することができることを、このようなプロキシのいくつかの種類を設定することが可能であろう、そのその後、画像データを取得するためにサービスにヒットし、画像ソースに期待される何らかの方法でブラウザに戻します。

いくつかの擬似コード:

class ImageProxy < ApplicationController 
    def show 
    data = ExternalImageDataRetriever.get_data_from("internal-network-image-service/images/123") 
    render something: data 
    end 
end 

答えて

0

は、それは非常に簡単でしたが判明します。

私はすでに画像用にネットワーク内の外部APIにリクエストを行うツールを構築しました。 APIを呼び出すと、生の画像データとMIMEタイプの2つの重要な情報が返されます。

私がしなければならなかったことは、これらをレールに通すことでした。

コントローラのアクションは、それだけでビューの画像タグにそのコントローラのアクションへのルートを使用していたその後、この

class ImageProxy < ApplicationController 
    def show 
    service_response = ExternalImageDataRetriever.get_data_from("internal-network-image-service/images/123") 
    render text: service_response.data, layout: nil, content_type: service_response.mime_type 
    end 
end 

ように見えてしまいました。

<%= image_tag image_proxy_path(id: 123) %> 
関連する問題