Как получить реальный путь из URI файла в SDCard? - PullRequest
0 голосов
/ 10 февраля 2020

Я использую react-native-document-picker, чтобы выбрать файлы и отправить их на сервер. После выбора файла я использую пакет RNFetchBlob.fs.stat(uri) из rn-fetch-blob, чтобы получить реальный путь от URI, который дает мне сборщик. Он прекрасно работает с внутренними файлами хранения, но когда я выбираю изображение из раздела «SD-карта», функция stat выдает исключение, которое говорит что-то вроде этого:

не удалось определить нулевой путь, поскольку не существует или это не папка

Удивительно, но когда я выбираю раздел «Изображения» и go для папки SD-карты и выбираю то же изображение, оно работает просто отлично !! У меня такая же проблема с разделом «Загрузки».

enter image description here

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

...