【问题标题】:Convert between URL and windows filename (AIR)?在 URL 和 Windows 文件名 (AIR) 之间转换?
【发布时间】:2012-01-07 04:39:26
【问题描述】:

我正在尝试将图像保存到智能手机的 AIR 应用程序中的磁盘。 我需要一种方法,可以安全地将 Web URL 转换为 Android 和 iOS 上的有效文件名(如果它能够保持 Windows/Mac 兼容性,那就太好了。),我可以从文件名中取回原始的完整 URL。例如:
输入为:
http://www.google.hu/search?client
编码格式类似于(这只是我现在发现的一些示例):
http%d%s%swww.google.com%tsearch%rclient%z

而且我需要一种方法将其转换回来。 我已经研究过 BASE64 - 但这允许使用“/”字符,并且我害怕使用 HEX 编码,因为这会生成超长的文件名,并且 URL 可能很长。
根据另一个问题,在 iOS 中,最大长度路径名是 1024 字节:max length of file name

谁有 AIR 的解决方案?基本上,这与Convert between URL and windows filename (Java)? 的问题相同——仅针对 AIR、iOS、Android。

或者我应该简单地修改一个 BASE64 编码器,并对长文件名做一些 hack?

【问题讨论】:

    标签: android ios actionscript-3 url air


    【解决方案1】:

    为什么不使用 escape() 和 unescape(),它本质上用安全字符替换所有邪恶字符。类似于 JavaScript 的 escape() 函数。

    (EDIT) 正如您所指出的,除了转义符之外,您还需要替换斜杠和星号 (/*) 字符以及任何其他无效字符,我已得到纠正。

    出于好奇,为什么不直接编写一个包含 url 的单独文本文件,并将其命名为与您的图像相同的名称?甚至使用数据库?这应该确保您永远不会得到一个大于最大文件名限制的疯狂长 url,并且您也不必担心转义/转换字符。

    【讨论】:

    • 因为它不会替换邪恶的字符,比如'*'或'/'
    • 如果我将 URL 写在文本文件中,我会遇到唯一图像名称的问题(我如何才能仅区分 sitea.com/logo.jpg 和 siteb 之间的图像名称.com/logo.jpg?)。我没有使用数据库,因为我尝试为 Flex 的图像类型创建本地缓存:BitmapImage 和 Image。问题是这些需要一个 LoaderInfo 来获取加载的图像 - 而数据库查询不能产生这个。
    猜你喜欢
    • 2010-12-11
    • 2011-09-04
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    相关资源
    最近更新 更多