我试图通过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中,我如何将文件读取到字节?
先谢谢大家。
2条答案
按热度按时间ql3eal8s1#
我们使用react-native-fs读取react-native应用中的二进制文件。
导入为
const RNFS = require("react-native-fs");
然后读取文件为
const fileBin = await RNFS.readFile(otaFileUri, "base64");
此外,为了将其转换回字节(Uint 8Array),我们使用rfc4648
cnh2zyt32#
库“react-native-fs”有一个名为read()的函数,可以读取文件的部分内容。
我使用这个函数循环读取整个文件,而不是把整个文件放到RAM中(这是大多数库所做的),我的例子是用tus上传协议上传大文件(+1GB)。