尝试将使用 [react-native-document-picker] 选择的文件上传到 fireStore 存储时出现权限拒绝错误

Posted

技术标签:

【中文标题】尝试将使用 [react-native-document-picker] 选择的文件上传到 fireStore 存储时出现权限拒绝错误【英文标题】:Permission Denial Error when trying to upload file picked with [react-native-document-picker] to fireStore storage 【发布时间】:2021-05-10 17:45:10 【问题描述】:

我正在尝试将 xlsx 上传到 firestore 存储,我正在使用 react-native-document-picker 从 ExternalStorageDirectoryPath 中选择文件,所以当仅记录文件 uri 时,我没有收到错误消息,而是一旦尝试上传文件就会抛出错误。 相关代码:

 const uploadFile=async ()=>
        try 
          
            const res = await DocumentPicker.pick(
                type: [DocumentPicker.types.allFiles],
            );
           
            const task =  Storage().ref('catalogue/'+ res.name).putFile(res.uri);
           
            task.on('state_changed', 
                sn =>,
                err=>console.log(err),
                () => 
                   console.log('excel uploaded!'+res.name)
                   Storage()
                   .ref("catalogue").child(res.name).getDownloadURL()
                   .then(url => 
                     console.log('uploaded excel url', url);
                   ).catch(err=>console.log(err))
               
            )
            await task 
             
           
           catch (err) 
            if (DocumentPicker.isCancel(err)) 
              // User cancelled the picker, exit any dialogs or menus and move on
             else 
              throw err;
            
        
    

` 我已经在我的androidManifest.xml 文件中包含了所需的权限并重建了项目

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.MANAGE_DOCUMENTS"/>

但我仍然收到此错误:

Permission Denial:读取 com.android.externalStorageProvider uri content://com... 需要 android.permission.MANAGE_DOCUMENTS 或 grantUriPermission()

【问题讨论】:

react-native中有两个AndroidManifest文件。仔细检查您是否在根文件中拥有它,此外,可能值得对应用程序进行全新安装或检查设置中授予的权限。 这个答案可能对你有帮助***.com/a/60316149/7178860 【参考方案1】:

我在使用最后一个 android SDK 版本的 Qt 框架时遇到了类似的问题,我已通过在清单 (pat Application) 中添加 requestLegacyExternalStorage 解决了这个问题:

<application android:requestLegacyExternalStorage="true" android:hardwareAccelerated="true" android:name="org.qtproject.qt5.android.bindings.QtApplication" //...

这与权限系统的最近更改有关: https://developer.android.com/about/versions/11/privacy/storage

【讨论】:

以上是关于尝试将使用 [react-native-document-picker] 选择的文件上传到 fireStore 存储时出现权限拒绝错误的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 Netbeans 将 Image 添加到 Mysql

如何使用资源尝试将while循环放入线程中?

尝试将 tensorboard 与 google colab 一起使用时出错

尝试使用弹性框将链接带到导航栏的右侧[重复]

尝试使用 PHP 将对象的实例读入数据库

尝试使用 imgkit 和 wkhtmltoimage 将 html 转换为图像