2014-02-26 7 views
6

Ich hatte einen Code, der mit Cordova 2.7 funktioniert. Ich habe meine App auf Cordova 3.3 aktualisiert und alle von mir entwickelten Plugins aktualisiert.Cordova 3.3 - fileSystem.root.fullPath gibt "/" anstelle des vollständigen Pfads zurück

war ich erfolgreich in der Lage, den vollständigen absoluten Pfad des Dokumenten-Verzeichnisses auf iOS mit Cordova 2.7, aber mit Cordova 3.3 kehrt / für die fullPath ist mein Code

Hier nur zu erhalten:

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

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

Ich testete dies auf iPad Simulator 7.0 (die korrekte Ergebnisse mit Cordova 2.7 ergab)

Obwohl ich den Pfad mit anderen Methoden erhalten kann, würde ich lieber die Cordova API verwenden.

Die API-Dokumentation erwähnt nichts darüber. Irgendeine Idee, was könnte falsch sein?

+0

Hallo @Mahendra, haben Sie dieses Problem gelöst Ich hatte dasselbe Problem mit Cordova 3.3 und es gibt keine Dokumentation. Ich habe die App debuggt und die URL auf Datei Download stimmt nicht überein und gibt – schwertfisch

+0

@Schwertfisch nicht zurück, ja ich habe es gelöst. Ich schaute in den Quellcode und sah, dass fullPath mit '/' initialisiert wurde. Irgendwie kommst du mit objektiven c wohl? WENN nicht, kann ich meine Antwort posten –

+0

Danke für Ihre Antwort. Jetzt funktioniert es, ich dachte, es gab ein Problem mit dem Datei-Plugin, weil es cdvfile: // localhost/persistent/zurückgab und ich +/durch einen Fehler hinzugefügt habe. cdvfile: // localhost/persistent // aber @Divesh Salian hat Recht, weil fullPath nicht an C 3.3 arbeitet, verwendet jetzt fileSystem.root.toURL(). Danke Jungs – schwertfisch

Antwort

5

Da nur wenige Benutzer auf meine Antwort angefordert wird, ist hier, wie ich das Documents Verzeichnispfad erhalten verwaltet:

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"; 

Denken Sie daran, YOUR_APP_NAME ersetzen mit dem Namen Ihrer App

10

try fullpath-toURL() und Test Wechsel

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

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

+1, dies ist zuverlässiger als @ Mahendra Antwort, da je nach Entwicklungsansatz 'window.location.href' nicht den Gerätepfad darstellen kann. –

+0

Ich testete nur Cordova 3.7, sie änderten es in eine erste Ebene 'nativeURL' Eigenschaft – Mirko

+0

Wenn Ihr aktueller Code das alte cordova 2' fileSystem.fullPath' Format wie '/../data/Containers/Data/Application/FE01 erwartet. ./Dokumente für den Pfad müssen Sie möglicherweise auch die ersten 7 Buchstaben "file: //" von der zurückgegebenen URL löschen. Verwenden Sie '(filesystem.root.toURL()). Substring (7);' – hadaytullah

Verwandte Themen