0

ユーザーがインターネット上の画像への URL を入力し、URL が指す画像をフラッシュ ロードできる Flex アプリケーションを構築しています。sourceこれは、(プロパティを設定するか、または を呼び出すことload()により)特殊文字を含まない URL に対して正常に機能しますImage。ただし、すでにエスケープされている特殊文字を含む URL が送信されると、つまり、ほとんどの場合、ブラウザーの URL バーから直接コピーされるだけでURLRequest、パーセント記号が「%25」で再度エスケープされ、URL が無効になり、サーバーがエラーを返します。ただし、ブラウザに同じ URL を貼り付けると、画像が正常に読み込まれます。URLを試してみdecodeURI()ましたが、それは大量の文字を無視するので、試してみましたdecodeURIComponent()。すべてが正しくデコードされますが、URLRequest再エンコードに行くと、デコードされた特殊文字は無視され、エスケープされません。したがって、この場合、URL は無効です。まだ安全でない文字が含まれており、失敗するためです。では、特殊文字 (エンコードまたはエンコードなし) を含むものを送信URLRequestして、実際に機能させるにはどうすればよいでしょうか? 本当に、それが私の URL で何もしないで、それが有効かどうかを判断させてくれたらいいのにと思いますが、それは Flash Player グローバル swc に埋め込まれているため、クローズド ソースの Flash であり、ソースが表示されません。コード。どんな助けでも大歓迎です!

これは基本的に私がやっていることです:

var image:Image = new Image();
image.source = textInput.text;

そして、私がテストしてきた URL は、ゲッティ イメージからのものです。

http://cache2.asset-cache.net/gc/sb10064464f-001-dog-looking-up-close-up-gettyimages.jpg?v=1&c=IWSAsset&k=2&d=BRDT%2firX5%2bLh54FjE4ekKh%2bjEirx6jSgMBJOgVxvtKL5ngFuzD9P5u%2bPvlXK4FiwQAMaNJuprd%HcFiwQAMaN 2fKXAA%3d%3d

コードをステップ実行すると、loadContent()関数 in SWFLoader(Image拡張) で、 afterrequestedURLが から作成され、オブジェクトnew URLRequesturlプロパティのURLRequestすべてのパーセント記号が (再び) '%25' でエスケープされ、次の URL が生成されます (これは を返します)。 Getty からの 500 エラー):

http://cache2.asset-cache.net/gc/sb10064464f-001-dog-looking-up-close-up-gettyimages.jpg?v=1&c=IWSAsset&k=2&d=BRDT%252firX5%252bLh54FjE4ekKh%252bjEirx6jSgMBJOgVxvtKL5ngFuzD9P5u%252bPvlXK4QAMaEHcwY6NrdJUQFip1% 252fKXAA%253d%253d

アップデート

  • ImageFlex SDK 4.1 を実行していることを忘れていました。mx.controls.Image
  • wvxvwの提案に基づいて、unescape()使用したのと同じ結果で試しましたdecodeURIComponent()
  • encodeURI()でデコードした後に URL を呼び出してみましたdecodeURIComponent()が、もちろん、デコードされた URL にある多くの安全でない文字を無視し、再エンコードしません。URLRequest同じことを行うため、最後に呼び出される URL はエンコードされず、失敗します。
  • 興味深いことにencodeURIComponent()、URL を呼び出して渡す前に再エンコードしようとしたときにURLRequest、おそらく既に '%25' になっているため、パーセントを再エンコードしませんでしたか?
  • 最終的に、「%」記号のみを探し、それらを単に「%25」に置き換え (「25」がまだ続いていない場合)、他の安全でない文字を無視するようです。なぜそれをするのでしょうか?そして、なぜこれまで誰もこの問題に遭遇しなかったのでしょうか?
4

1 に答える 1

1

安全でない可能性のある文字を含む URL から読み込まれた画像については、Loaderorを使用して手動で読み込む必要があります。これにより、関数URLLoaderが回避されます。SWFLoaderOSToPlayerURI()

于 2012-09-28T17:52:36.140 に答える