2011-11-27 19 views
0

我正嘗試將圖像保存到智能手機的AIR應用程序中的磁盤上。 我需要一種方法,它可以安全地將網址轉換爲iOS上的有效文件名(如果它保留Windows/Mac的兼容性,它會很好)。我可以從文件名中找回原始的完整URL。例如:
輸入是:
http://www.google.hu/search?client
編碼格式是一樣的東西(這只是一些例子,我現在發現了):
HTTP%d%S%swww.google.com%TSEARCH%rclient%ZURL和Windows文件名(AIR)之間的轉換?

而我需要一種方法將其轉換回來。 我已經看過BASE64--但是這允許「/」字符,並且害怕使用HEX編碼,因爲這會生成超長文件名,並且URL可能很長。
根據另一個問題,在iOS中,最大路徑名爲1024字節:max length of file name

任何人都有AIR的解決方案?基本上這是與Convert between URL and windows filename (Java)?相同的問題 - 僅適用於AIR,iOS,Android。

或者我應該簡單地修改一個BASE64編碼器,並做一些長文件名的黑客?

回答

1

爲什麼不使用escape()和unescape(),它基本上用安全的字符替換所有的邪惡字符。類似於JavaScript的escape()函數。如你所指出的那樣,除了逃生之外,你還需要替​​換斜線和星號(/ *)字符以及任何其他無效字符。

出於好奇,爲什麼不直接寫一個單獨的文本文件並在其中包含url,並將其命名爲與圖像相同?甚至使用數據庫?這應該確保你永遠不會得到一個超過最大文件名限制的瘋狂長URL,你也不必擔心轉義或轉換字符。

+0

因爲它不會取代邪惡字符,如'*'或'/' – sydd

+0

如果我要在URL中寫入文本文件,我會遇到獨特的圖像名稱的問題(我怎麼才能區分只有圖片名稱在sitea.com/logo.jpg和siteb.com/logo.jpg之間?)。 我沒有使用數據庫,因爲我嘗試爲Flex的圖像類型製作本地緩存:BitmapImage和Image。問題是這些需要一個LoaderInfo來獲取加載的圖像 - 而一個DB查詢不能產生這個。 – sydd