我的桌面应用程序需要从互联网下载文件。文件路径已知,但文件名本身是半变量的,即其他人将在那里放置新文件,我的应用程序将不得不下载这些文件。
现在我想确保URL安全,并且它将被正确解释。此外,如果文件名中有“#”(你永远不知道),我希望它被编码。Javascript有两个不同的函数来实现这一点:
当然,我可以自己编写代码,但我认为肯定有现成的函数可用,我也可以避免犯一些错误。
我将使用一个对象来下载文件,该对象使用WinInet系列API函数(InternetOpen及其类似函数)。
我开始在MSDN上搜寻,果然找到了UrlCanonicalize。但是还有UrlEscape、CreateUri(但这个在Delphi 2010单元中不存在),最后还有InternetCreateUrl,需要我将整个URL分割开来。我更愿意将URL的第一部分与URLEncoded文件名连接起来。
此外,它们都有大量不同的标志,不同的默认值随着Windows版本的变化而改变,我再也无法弄清楚它们之间的区别了。有人知道哪一个最适合这个目的吗?
现在我想确保URL安全,并且它将被正确解释。此外,如果文件名中有“#”(你永远不知道),我希望它被编码。Javascript有两个不同的函数来实现这一点:
encodeURI
和encodeURIComponent
。后者还对'#'字符进行编码,以及其他一些字符。当然,我可以自己编写代码,但我认为肯定有现成的函数可用,我也可以避免犯一些错误。
我将使用一个对象来下载文件,该对象使用WinInet系列API函数(InternetOpen及其类似函数)。
我开始在MSDN上搜寻,果然找到了UrlCanonicalize。但是还有UrlEscape、CreateUri(但这个在Delphi 2010单元中不存在),最后还有InternetCreateUrl,需要我将整个URL分割开来。我更愿意将URL的第一部分与URLEncoded文件名连接起来。
此外,它们都有大量不同的标志,不同的默认值随着Windows版本的变化而改变,我再也无法弄清楚它们之间的区别了。有人知道哪一个最适合这个目的吗?
..
,你可能会无意中覆盖你没有预期的文件。 - Rob Kennedy