将文件转换为字节值数字数组
Posted
技术标签:
【中文标题】将文件转换为字节值数字数组【英文标题】:converting file to array of bytes value numbers 【发布时间】:2017-10-07 07:34:44 【问题描述】:我有这个 PDF 文件,我需要将其转换为字节值数字数组。
我之前已将其转换为 base64,但对于 2MB 的 PDF,将 PDF 转换为 base64 需要很长时间。 是否有另一种方法可以更快地将 PDF 转换为 base64 或将该 PDF 文件转换为字节数组(看看它是否比转换为 base64 更快)?
我之前使用 filereader 将文件读入 dataURL。下面是我用来转换为 base64 的代码。
getFileContentAsBase64(path, callback)
window.resolveLocalFileSystemURL(path, gotFile, fail);
function fail(e)
alert('Cannot found requested file');
function gotFile(fileEntry)
fileEntry.file(function (file)
var reader = new FileReader();
reader.onloadend = function (e)
var content = this.result;
callback(content);
reader.readAsDataURL(file);
);
编辑:
getFileContentAsBase64(path, callback)
window.resolveLocalFileSystemURL(path, gotFile, fail);
function fail(e)
alert('Cannot found requested file');
function gotFile(fileEntry)
fileEntry.file(function (file)
var reader = new FileReader();
reader.onloadend = function (e)
var content = this.result;
var array = new Uint8Array(content);
var binaryString = String.fromCharCode.apply(null, array);
callback(content);
reader.readAsArrayBuffer(file);
);
【问题讨论】:
***.com/a/32556944/1848109 我猜 soln 已经回答了。 @Nirus 我已经看到了该解决方案,但它似乎不适用于我的情况。我在上面编辑了我的问题,向您展示我尝试过的内容。也许我转换背后的逻辑是错误的...... @Lyon:在加载脚本<script src="build/polyfills.js"></script> <script src="cordova.js"</script>
时是否保持此序列,如果没有,则更改为此序列并尝试您在编辑中所做的解决方案
@Lyon 转换成 base64 或 arraybuffer 后你想实现什么?你的问题有什么问题(编辑部分)?
@ParthGhiya 我将更改顺序并重试。给我一点时间。
【参考方案1】:
我通过将文件转换为二进制字符串来克服这个问题,然后我从服务器端调用云函数来进行文件的转换和保存。谢谢大家帮忙!~
【讨论】:
以上是关于将文件转换为字节值数字数组的主要内容,如果未能解决你的问题,请参考以下文章