【发布时间】: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);
});
}
}
【问题讨论】:
-
stackoverflow.com/a/32556944/1848109 我猜 soln 已经回答了。
-
@Nirus 我已经看到了该解决方案,但它似乎不适用于我的情况。我在上面编辑了我的问题,向您展示我尝试过的内容。也许我转换背后的逻辑是错误的......
-
@Lyon:在加载脚本
<script src="build/polyfills.js"></script> <script src="cordova.js"</script>时是否保持此序列,如果没有,则更改为此序列并尝试您在编辑中所做的解决方案 -
@Lyon 转换成 base64 或 arraybuffer 后你想实现什么?你的问题有什么问题(编辑部分)?
-
@ParthGhiya 我将更改顺序并重试。给我一点时间。
标签: javascript arrays angular typescript ionic2