2014-02-26 114 views
6

我有一段代碼與Cordova 2.7一起工作。我升級了我的應用程序到Cordova 3.3,同時升級了我開發的所有定製插件。Cordova 3.3 - fileSystem.root.fullPath返回「/」而不是完整路徑

我是能夠成功地獲得與科爾多瓦2.7 iOS上的文件目錄的完整絕對路徑,但科爾多瓦3.3它只返回/爲FULLPATH

這裏是我的代碼:

window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; 
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail); 

function gotFS(fileSystem) { 
    alert("entered gotFS: " + fileSystem.root.fullPath); 
} 

我在iPad Simulator 7.0上測試了這個(它給了Cordova 2.7正確的結果)

儘管我可以用其他方法獲得路徑,但我更喜歡使用Cordova API。

API文檔沒有提及這方面的任何內容。任何想法可能是錯的?

+0

嗨@Mahendra,你解決了這個問題?,我與科爾多瓦3.3有同樣的問題,並且沒有文檔。我正在調試應用程序和文件中的網址下載不匹配和返回零 – schwertfisch

+0

@Schwertfisch,是的,我解決了它。我查看了源代碼並查看了使用'/'初始化fullPath。你有什麼機會對目標C感到滿意嗎?如果不是,我可以發佈我的答案 –

+0

感謝您的答案。現在,它的工作,我認爲有一個文件插件的問題,因爲它返回cdvfile://本地主機/持久性/和我添加+ /錯誤。 cdvfile:// localhost/persistent //但@Divesh Salian是正確的,因爲完整路徑不適用於C 3.3現在使用fileSystem.root.toURL()。 謝謝你們 – schwertfisch

回答

5

由於很少有用戶會要求我的答案,這裏是我如何設法讓Documents目錄路徑:

var documentsDirectoryPath = decodeURIComponent(window.location.href); 
documentsDirectoryPath = documentsDirectoryPath.substring("file://".length); 
documentsDirectoryPath = documentsDirectoryPath.substring(0, documentsDirectoryPath.indexOf("/<<YOUR_APP_NAME>>.app/www/index.html")); 
documentsDirectoryPath += "/Documents"; 

記得替換YOUR_APP_NAME與您的應用程序的名稱

10

嘗試改變fullpathtoURL()和測試

window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; 
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail); 

function gotFS(fileSystem) { 
    alert("entered gotFS: " + fileSystem.root.toURL()); 
} 
+0

+1,這比@ Mahendra的答案更可靠,因爲根據開發方法'window.location.href'可能不代表設備路徑。 –

+0

我只測試了科爾多瓦3.7,他們將其更改爲第一級'nativeURL'屬性 – Mirko

+0

如果您當前的代碼需要舊的cordova 2'fileSystem.fullPath'格式,例如'/../data/Containers/Data/Application/FE01 .. 。/ Documents「,那麼你可能還需要從返回的URL中清除前7個字母'file://'。使用'(filesystem.root.toURL())。substring(7);' – hadaytullah

相關問題