我正在构建一个Flex应用程序,在这个应用程序中,用户可以在Internet上输入一个图像的URL,然后让flash加载URL指向的图像。这对于没有特殊字符的URL很好(通过设置source
属性或在Image
上调用load()
)。但是,当提交具有已转义的特殊字符的URL时,即在大多数情况下,只需直接从浏览器中的地址栏复制,URLRequest
就会使用'%25‘再次转义百分比符号,从而使URL无效,服务器返回错误。不过,在浏览器中粘贴相同的URL可以加载图像。我在URL上尝试过decodeURI()
,但是这忽略了大量的字符,所以我尝试了decodeURIComponent()
,它正确地解码了所有的东西,但是当URLRequest
重新编码它时,它忽略了现在解码的特殊字符并没有转义它们,所以在这种情况下,URL是无效的,因为它仍然有不安全的字符,并且失败。那么,我如何发送带有特殊字符(编码或未编码)的URLRequest
,并使其实际工作?真的,我希望它没有对我的URL做任何事情,让我确定它是否有效,但是它嵌入在Flash Player globals swc中,因此是闪存的封闭源代码,我看不到源代码。任何帮助都将不胜感激!
这基本上就是我要做的:
var image:Image = new Image();
image.source = textInput.text;
我一直在测试的URL来自Getty图像:
如果您在SWFLoader
中的SWFLoader
函数( Image
扩展的)中,在从new URLRequest
中创建requestedURL
之后,在URLRequest
对象上的url
属性中使用'%25‘转义(再次),生成以下URL (这将从new URLRequest
返回500个错误):
更新
Image
是mx.controls.Image
unescape()
,结果与使用decodeURIComponent()
相同encodeURI()
解码后,我也尝试在URL上调用decodeURIComponent()
,但是当然它忽略了被解码的URL中的许多不安全字符,并且不对它们进行重新编码。URLRequest
也是这样做的,所以最终调用的URL没有编码,因此失败了。encodeURIComponent()
并在传入之前重新编码它时,URLRequest
没有重新编码百分比,大概是因为它们已经'%25‘了?发布于 2012-09-28 09:52:36
对于从带有潜在不安全字符的URL加载的图像,必须使用Loader
或URLLoader
并手动加载它们,这样就避免了SWFLoader
和OSToPlayerURI()
函数。
https://stackoverflow.com/questions/12628400
复制相似问题