apache / apache/cordova-plugin-file

Directory read returns broken FileEntry objects

Offen
#653 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
bug platform: android platform: browser
Vorherrschende Sprache
JavaScript
Sterne
744
Forks
754
Ø Merge
3 T. 4 Std.
Gemergte PRs (30 T.)
1

Beschreibung

# Bug Report

## Problem

### What is expected to happen?
I should be able to read a FileEntry's metadata no matter how I got hold of the object

### What does actually happen?
I retrieving the FileEntry handle directly via `resolveLocalFilesystemURL` I can call getMetadata() on the returned object without an issue; but if I obtain the handle by reading the parent (root) directory, the call will result in NOT_FOUND_ERR`

### Command or Code

I am running the below code in the `deviceready` event handler:
```
console.log('Running cordova-' + cordova.platformId + '@' + cordova.version);

function errorHandler(e) {
console.error("Error: ", e);
}

function testFileMetadataRead() {
console.log("Successful file write...");

window.resolveLocalFileSystemURL(cordova.file.dataDirectory + "/test.txt", function(file) {
console.log("Contructor of FILE handle", file.constructor);
file.getMetadata(
function (m) { console.log("Getting FILE metadata", file, m) },
function (e) { console.log("Error getting FILE metadata", e) }
);
}, errorHandler);

window.resolveLocalFileSystemURL(cordova.file.dataDirectory, function(dir) {
dir.createReader().readEntries(function (entries) {
entries.forEach(function(entry) {
console.log("Contructor of DIRECTORY ENTRY handle", entry.constructor);
entry.getMetadata(
function (m) { console.log("Getting DIR ENTRY metadata", file, m) },
function (e) { console.log("Error getting DIR ENTRY metadata", e) }
);
});
}, function (e) { console.log("Error listing directory", e) });
}, errorHandler);
}

window.resolveLocalFileSystemURL(cordova.file.dataDirectory, function(dir) {
dir.getFile("test.txt", { create: true, exclusive: false }, function (fileEntry) {
fileEntry.createWriter(function (fileWriter) {
fileWriter.onwriteend = testFileMetadataRead;
fileWriter.onerror = function (e) { console.log("Error writing FILE", e) };

const blob = new Blob(["The quick brown fox jumps over the lazy dog!"], { type: 'text/plain' });
fileWriter.write(blob);
});
},
function (e) { console.log("Error creating new file", e) });
}, errorHandler);
```

## Result
```
Running cordova-browser@7.0.0 bundle.js:480:13
Successful file write... bundle.js:509:17

Contructor of FILE handle
function FileEntry(name, fullPath, fileSystem, nativeURL)
bundle.js:512:21

Getting FILE metadata
Object { isFile: true, isDirectory: false, name: "test.txt", fullPath: "/test.txt", filesystem: {…}, nativeURL: null }
Object { modificationTime: Date Sun Mar 22 2026 16:13:17 GMT+0000 (Greenwich Mean Time), size: 44 }
bundle.js:514:40

Contructor of DIRECTORY ENTRY handle
function FileEntry(name, fullPath, fileSystem, nativeURL)
bundle.js:522:29

Error getting DIR ENTRY metadata
Object { code: 1 }
bundle.js:525:48
```

### Environment, Platform, Device

Using Cordova Browser for testing on Linux Mint 22.3.

### Version information

cordova-browser@7.0.0
cordova-plugin-file@8.1.3
cordova-plugin-webpack@1.0.5

## Checklist

- [x] I searched for existing GitHub issues
- [x] I updated all Cordova tooling to most recent version
- [x] I included all the necessary information above

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne mit der deviceready-Reproduktion unter Verwendung von resolveLocalFileSystemURL, createReader().readEntries() und getMetadata(), und vergleiche den direkt aufgelösten FileEntry mit dem vom Verzeichnis zurückgegebenen Eintrag. Reproduziere das Problem mit den aufgeführten Versionen von Cordova Browser und file-plugin; als erledigt gilt es, wenn der Abruf der Metadaten für beide Handles ohne NOT_FOUND_ERR erfolgreich ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
javascript
Bereich
mobile-dev
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
55/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.