3

我正在使用react-native-document-picker以选择文件并将它们发送到服务器。选择文件后,我使用RNFetchBlob.fs.stat(uri)from rn-fetch-blobpackage 从选择器给我的 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 卡中文件的真实路径?我很感激任何想法。

操作系统:安卓

4

0 回答 0