我想从远程存储中获取音频文件。我如何使用方法" fetch"的响应结果?处理二进制数据?我想用react-native-fs将它们保存在本地文件系统中。但我无法找到方法的返回值的文件" fetch"访问二进制blob。 我试着在console.log中获取fetch的响应,但是对于二进制数据,xcode挂起然后是不负责任的
我正在寻找类似的东西:
fetch(mediaUrl).then( (response) => {
let blob = response.getBinaryData()
})
(getBinaryData是一个有效的方法。这正是我的问题:如何获取二进制数据?)
有些人指向" response.blob()",但此方法未在react-native中实现。
" response.blob不是一个函数。 (在' response.blob()'中, ' response.blob'未定义)"
答案 0 :(得分:2)
我差不多在一年半前完全忘记了这个(过时的)自己的问题,最终会提供一个合适的答案:
使用库react-native-fs,可以下载二进制文件并将二进制文件存储在磁盘存储上,音频文件可以与react-native-sound一起播放,例如视频文件可以与{{{ 3}}
const downloadOptions = {
fromUrl: imageUrl,
toFile: filename
}
return yield RNFS.downloadFile(downloadOptions).promise.then( (res) => {
if(res.statusCode == 200) {
return true;
}
else {
console.log("Download failed", res);
return false;
}
})
.catch((err) => {
console.log('DownloadFile Error', err);
return false;
});
答案 1 :(得分:-1)
我花了一些时间调查这个。我确定还有更多要知道但我会从https://developer.mozilla.org/en-US/docs/Web/API/Blob和https://developer.mozilla.org/en-US/docs/Web/API/Body/blob
开始这是一个有效的RN代码段。
url = 'https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png';
opts = {}
return fetch(url, opts)
.then(response => response.blob())
.then(blob => {
console.log('blob', blob);
let reader = new FileReader();
reader.addEventListener("loadend", function() {
console.log(reader.result);
});
reader.readAsDataURL(blob);
});
}