Я использую react-native-document-picker
, чтобы выбрать файлы и отправить их на сервер. После выбора файла я использую пакет RNFetchBlob.fs.stat(uri)
из rn-fetch-blob
, чтобы получить реальный путь от URI, который дает мне сборщик. Он прекрасно работает с внутренними файлами хранения, но когда я выбираю изображение из раздела «SD-карта», функция stat
выдает исключение, которое говорит что-то вроде этого:
не удалось определить нулевой путь, поскольку не существует или это не папка
Удивительно, но когда я выбираю раздел «Изображения» и go для папки SD-карты и выбираю то же изображение, оно работает просто отлично !! У меня такая же проблема с разделом «Загрузки».
![enter image description here](https://i.stack.imgur.com/jC2uF.jpg)
URI, который возвращает сборщик, - это когда я выбираю изображение из «Изображения» "section:
content://com.android.providers.media.documents/document/image%3A76431
и когда я выбираю из раздела" SD-карта ": content://com.android.externalstorage.documents/document/F673-1818%3Abbb.png
Сейчас я использую этот код, но это не правильное решение, потому что оно как-то грязно и не работает на всех устройствах.
if(uri.substr(0,57) === "content://com.android.externalstorage.documents/document/"){
let filePath = decodeURIComponent(uri.substr(57));
let subUri = filePath.replace(/:\s*/g, "/");
filePath = "/storage/" + subUri;
return `file://${filePath}`
}
Есть ли лучший способ получить реальный путь к файлу на SD-карте из его URI? Я ценю любую идею.
ОС: Android