我正在构建一个Flex应用程序,用户可以在其中输入Internet上图像的URL,然后使用flash加载URL指向的图像。这适用于没有特殊字符的网址(通过设置source
属性或在load()
上调用Image
)。但是,当提交的URL具有已经转义的特殊字符时,即在大多数情况下只是直接从浏览器中的URL栏复制,URLRequest
再次使用'%25'转义百分号,这使得URL无效,服务器返回错误。在浏览器中粘贴相同的URL会加载图像就好了。我在网址上尝试了decodeURI()
,但忽略了大量字符,因此我尝试了decodeURIComponent()
,并对所有内容进行了正确解码,但是当URLRequest
重新编码时,它忽略了现在解码的特殊字符,并且不会对它们进行转义,因此在这种情况下,URL无效,因为它仍然有不安全的字符并且失败。那么,我怎样才能发送URLRequest
带有特殊字符的东西(编码或未编码)并让它真正起作用?真的,我希望它没有对我的URL做任何事情,让我确定它是否有效,但它嵌入在Flash Player全局swc中,因此是闪存的封闭源代码,我看不到源代码码。任何帮助将不胜感激!
这基本上就是我正在做的事情:
var image:Image = new Image();
image.source = textInput.text;
我一直在测试的网址来自Getty图片:
如果您单步执行代码,请loadContent()
SWFLoader
Image
功能requestedURL
new URLRequest
url
,URLRequest
创建Image
后, mx.controls.Image
对象上的unescape()
属性将所有百分号都用'%25'转义(再次),产生以下URL(将从Getty返回500错误):
更新
decodeURIComponent()
是encodeURI()
decodeURIComponent()
与使用URLRequest
encodeURIComponent()
解码后,我也尝试在URL上调用URLRequest
,但当然它忽略了解码后的URL中的许多不安全字符,并且不对它们进行重新编码。 {{1}}执行相同操作,因此最终调用的URL未编码,因此失败。答案 0 :(得分:1)
对于从具有可能不安全字符的网址加载的图片,您必须使用Loader
或URLLoader
并手动加载它们,这样可以避免SWFLoader
和OSToPlayerURI()
功能。