React-Native-fs no puede abrir mi URI desde document-picker.
Selecciono un archivo a través de DocumentPicker, obtengo su URI y lo paso a una función que debería abrir mi documento (csv). Pero obtengo el Error ENSCOCOAERRORDOMAIN260
.
Además, intenté ver si hay un archivo, pero no lo hay. Sin embargo, lo seleccioné a través de DocumentPicker (obtengo el nombre de archivo, tamaño, etc. a través de esto).
Esta sería la función:
async readCSVsaveTOJson(uri){
var RNFS = require('react-native-fs');
realDoc = uri.replace('file:/', '');
console.log(realDoc);
var kacke = '';
var counter = 0;
for(var i in realDoc){
if(counter > 0){
kacke += realDoc[i];
}
counter++;
}
console.log('¿existe?');
console.log(RNFS.exists(kacke));
RNFS.readDir(kacke)
.then((result) => {
console.log('resultado');
return Promise.all([RNFS.stat(result[0].path), result[0].path]);
})
.then((statResult) => {
if (statResult[1].isFile()) {
var content = RNFS.readFile(kacke);
console.log('--------------------------');
console.log(content);
return RNFS.readFile(statResult[1], 'utf8');
}
return 'no hay archivo';
})
.then((contents) => {
console.log(contents);
})
.catch((err) => {
console.log('ERROR, no hay nada');
console.log(err.message, err.code);
});
}
Lanza console.log('ERROR, no hay nada')
.. pero sé que debería haber algo.
¿Algún consejo?
Muchas gracias
davy.ai
Parece que el problema está en la forma en que manejas la URI del archivo seleccionado. Al pasar la URI a la función
readCSVsaveTOJson
, asegúrate de manejar correctamente la URI para extraer la ruta real del archivo. Es posible que el formato de la URI en tu dispositivo sea diferente al que esperas.Actualmente estás utilizando la función
replace
para eliminar el prefijofile:/
, lo cual puede que no sea suficiente. En su lugar, puedes intentar utilizar la funcióndecodeURI()
para extraer la ruta del archivo de la URI. Aquí tienes una versión actualizada de tu código:En este código actualizado, primero decodificas la URI utilizando
decodeURI()
para obtener la ruta del archivo. Luego, utilizasawait RNFS.exists(decodedUri)
para verificar si el archivo existe, lo cual devolverá un valor booleano. Finalmente, pasasdecodedUri
a las funcionesRNFS.readDir()
yRNFS.readFile()
para leer el contenido del archivo.Si esto aún no funciona, asegúrate de tener los permisos necesarios para leer el archivo seleccionado. En iOS, necesitas agregar la clave
NSDocumentsFolderUsageDescription
a tu archivoInfo.plist
, y en Android, necesitas solicitar el permisoREAD_EXTERNAL_STORAGE
.