React Native 如何将所选文件读入字节或流

tv6aics1  于 2023-03-19  发布在  React
关注(0)|答案(2)|浏览(450)

我试图通过WebRTC发送使用react-native-document-picker选择的文件,但似乎无法将其读取到字节。
在浏览器中,我将使用FileReader<input type="file">读取。

document.querySelector('input').addEventListener('change', function() {
  var reader = new FileReader();
  reader.onload = function() {

    var arrayBuffer = this.result,
      array = new Uint8Array(arrayBuffer),
      binaryString = String.fromCharCode.apply(null, array);

    console.log(binaryString);

  }
  reader.readAsArrayBuffer(this.files[0]);

}, false);

React Native中,我选择了一个文件,如下所示:

import DocumentPicker from 'react-native-document-picker';

const handleDocumentSelection = useCallback(async () => {
    const file = await DocumentPicker.pick({
        presentationStyle: 'fullScreen',
    });

    // Send file via WebRTC
}, []);

在React Native中,我如何将文件读取到字节?
先谢谢大家。

ql3eal8s

ql3eal8s1#

我们使用react-native-fs读取react-native应用中的二进制文件。
导入为
const RNFS = require("react-native-fs");
然后读取文件为
const fileBin = await RNFS.readFile(otaFileUri, "base64");
此外,为了将其转换回字节(Uint 8Array),我们使用rfc4648

cnh2zyt3

cnh2zyt32#

库“react-native-fs”有一个名为read()的函数,可以读取文件的部分内容。

read(filepath: string, length = 0, position = 0, encodingOrOptions?: any): Promise<string>

我使用这个函数循环读取整个文件,而不是把整个文件放到RAM中(这是大多数库所做的),我的例子是用tus上传协议上传大文件(+1GB)。

相关问题