javascript - 如何在javascript中将文件转换为字节流
问题描述
如何将文件转换为字节数组。
另一种方式低于一个
let file = new File([myBlob], "name");
文件需要转换成字节流
解决方案
您可能可以尝试使用浏览器中可用的 FileReader API。
let file = new File(...) // this could be from file input or other source
let fileReader = new FileReader();
fileReader.readAsArrayBuffer(file);
fileReader.onload = function(ev) {
const result = ev.target.result;
console.log(result); // here it is
}
根据这个答案,如果结果 fromreadAsArrayBuffer
对您不起作用,您可能需要将其转换为实际byte[]
using new Uint8Array
。这是上述代码的扩展版本:
let file = new File(...) // this could be from file input or other source
let fileReader = new FileReader();
fileReader.readAsArrayBuffer(file);
fileReader.onload = function(ev) {
const array = new Uint8Array(ev.target.result);
const fileByteArray = [];
for (let i = 0; i < array.length; i++) {
fileByteArray.push(array[i]);
}
console.log(array); // here it is
}
这里是用 promise 包裹起来的实现,方便使用:
function getByteArray(file) {
return new Promise(function(resolve, reject) {
fileReader.readAsArrayBuffer(file);
fileReader.onload = function(ev) {
const array = new Uint8Array(ev.target.result);
const fileByteArray = [];
for (let i = 0; i < array.length; i++) {
fileByteArray.push(array[i]);
}
resolve(array); // successful
}
fileReader.onerror = reject; // call reject if error
})
}
//usage
let file = new File(...)
getByteArray(file).then((byteArray) => {
// do whatever you need
console.log(byteArray);
})
PS如果由于某种原因不能参考ev.target
,请尝试fileReader.result
改用。
推荐阅读
- c# - 你如何处理 git 中的临时 nuget 包更新
- tensorflow - 来自自定义函数的 IoU 得分与来自 Keras 指标的平均 IoU 不匹配
- javascript - Node.js:如何透明地要求和导出子模块
- python - 来自列表字典的字典
- amazon-web-services - aws emr 添加步骤 spark 应用程序
- r - 我如何正确地从 R 中的 NETCDF 文件重新定位 RasterBrick 中放错位置的经度和纬度?
- linux - 如何遍历文本文件(包含一些文件的路径,比如 a、b、c)并复制文本文件中的文件
- c# - Search After Usage API 不返回日志
- sonarqube - 如何将 jacoco 运行时集成报告发布到 Sonarqube
- javascript - 在共享屏幕时单击谷歌浏览器中的停止共享时调用函数