Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native React Native中的DocumentPicker在Android设备上无法正常工作_React Native_Upload_Document_Picker - Fatal编程技术网

React native React Native中的DocumentPicker在Android设备上无法正常工作

React native React Native中的DocumentPicker在Android设备上无法正常工作,react-native,upload,document,picker,React Native,Upload,Document,Picker,我已经在我的react本机应用程序中实现了一个文档选择器,它在iOS上运行良好。然而在安卓系统中,我遇到了一个奇怪的问题 当我打开文档选择器,导航到Android手机中的文件浏览器(下载部分),虽然我可以选择pdf文件,但当它回到应用程序时,它会粘在页面上,文件不在那里。我附上了屏幕截图,显示了文件浏览器处理最近文件时的相同行为。只有当从最近的文件中,我选择谷歌驱动器并尝试从那里选择pdf时,它才能按预期工作,我可以在我的应用程序中看到文件,并且应用程序不会卡住 以下是我为pdf文档选择器编写的

我已经在我的react本机应用程序中实现了一个文档选择器,它在iOS上运行良好。然而在安卓系统中,我遇到了一个奇怪的问题

当我打开文档选择器,导航到Android手机中的文件浏览器(下载部分),虽然我可以选择pdf文件,但当它回到应用程序时,它会粘在页面上,文件不在那里。我附上了屏幕截图,显示了文件浏览器处理最近文件时的相同行为。只有当从最近的文件中,我选择谷歌驱动器并尝试从那里选择pdf时,它才能按预期工作,我可以在我的应用程序中看到文件,并且应用程序不会卡住

以下是我为pdf文档选择器编写的内容

selectPDF = async ()=>{

      
        var imageList = [...this.state.files];


        try {
            const results = await DocumentPicker.pickMultiple({
            type: [DocumentPicker.types.pdf],
            });
            for (const res of results) {

                    console.log(
                        res.uri,
                        res.type, // mime type
                        res.name,
                        res.size
                    );

                    const fileName = res.uri.replace("file://","");
                    let data1 = ''
                    RnFetchBlob.fs.readStream(
                        fileName,
                        'base64',
                        4095
                    )
                    .then((ifstream)=>{
                        //let data1 = ''
                        ifstream.open()
                        ifstream.onData((data)=>{
                            data1 += data;


                        })

                        ifstream.onEnd(() => {
                           
                            let base64 = data1
                   
                                                     
                            imageList.push({
                                imageName:res.name,
                                image:base64,
                                mime:res.type,
                                size:res.size
                            })

                            this.setState({
                                ...this.state,
                                openCamera:false,
                                lastFileName:imageList[imageList.length - 1].imageName,
                                files:imageList
                            })

                        })
                    })



            }
        } catch (err) {
            if (DocumentPicker.isCancel(err)) {
                    this.closeModal();
            } else {
            throw err;
            }
        }
    }

谁能告诉我我可能错过了什么。是否需要在设备级别或任何其他方面设置某些配置。

您可以使用类似的方式

const [file, setFile] = useState(null);
现在可以在函数中调用file 要使用它,你可以这样做

<TouchableOpacity
            activeOpacity={0.5}
            onPress={selectFile}>
            <Text>Select File</Text>
</TouchableOpacity>

选择文件

这方面有什么帮助吗
<TouchableOpacity
            activeOpacity={0.5}
            onPress={selectFile}>
            <Text>Select File</Text>
</TouchableOpacity>