尝试将使用 [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