将文件转换为字节值数字数组

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】:

我通过将文件转换为二进制字符串来克服这个问题,然后我从服务器端调用云函数来进行文件的转换和保存。谢谢大家帮忙!~

【讨论】:

以上是关于将文件转换为字节值数字数组的主要内容,如果未能解决你的问题,请参考以下文章

PHP如何将从二进制文件中读取的字节转换为数字

将字节数组转换为 wav 文件

使用 JavaScript 数学将字节转换为千兆字节

如何在C ++中将字节数组中的整数转换为数字

将 3 字节数组转换为数字

无法将文件路径转换为字节数组android [重复]