我正在使用react-native-document-picker
以选择文件并将它们发送到服务器。选择文件后,我使用RNFetchBlob.fs.stat(uri)
from rn-fetch-blob
package 从选择器给我的 URI 中获取真实路径。它适用于内部存储文件,但是当我从“SD卡”部分选择图像时,该stat
函数会抛出一个异常,如下所示:
由于路径不存在或不是文件夹,因此无法将路径设为 null
令人惊讶的是,当我选择“图像”部分并转到 SD 卡文件夹并选择相同的图像时,它工作得很好!!我对“下载”部分也有同样的问题。
当我从“图像”部分选择图像时,选择器返回的 URI 是这样的:
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}`
}
有没有更好的方法从它的 URI 中获取 SD 卡中文件的真实路径?我很感激任何想法。
操作系统:安卓