javascript将文件转换为字节数组

时间:2017-12-19 02:29:47

标签: javascript arrays

我现在有一个file.mp3文件。我需要将其转换为字节数组的格式。谁能告诉我怎么做?

问题扩展: 该文件不限于.mp3格式?

除了字节数组之外,我还有其他一些选项,例如

  1. { base64: "..." }这样的对象,带有base64-encoded字符串
  2. Node.js运行时中的缓冲区。
  3. Node.js运行时中的流。

3 个答案:

答案 0 :(得分:0)

如果从用户上传:

//<![CDATA[
/* external.js */
var doc, bod, I, old = onload;
onload = function(){
if(old)old(); // change old var name if using technique on other pages
doc = document; bod = doc.body;
I = function(id){
  return doc.getElementById(id);
}
function readAsBytes(file, done, doneContext){
  var fr = new FileReader, c = doneContext || this;
  fr.onload = function(){
    done.call(c, fr.result.replace(/^data.+,/, ''));
  }
  fr.readAsDataURL(file);
}
var frm = I('frm'), out = I('out');
frm.onsubmit = function(){
  // stuff you need to happen - use AJAX
  return false;
}
I('up').onchange = function(){
  readAsBytes(this.files[0], function(res){
    // ArrayInstance assignment to .innerHTML automatically does ArrayInstance.join(',')
    out.innerHTML = res.split(''); // don't use split, if you don't want an Array
  });
}
}
//]]>
/* external.css */
html,body{
  padding:0; margin:0;
}
body{
  background:#000; overflow-y:scroll;
}
.main{
  width:936px; background:#fff; padding:20px; margin:0 auto;
}
<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
  <head>
    <meta http-equiv='content-type' content='text/html;charset=utf-8' />
    <meta name='viewport' content='width=device-width' />
    <title>readAsBytes()</title>
    <link type='text/css' rel='stylesheet' href='external.css' />
    <script type='text/javascript' src='external.js'></script>
  </head>
<body>
  <div class='main'>
    <form id='frm' name='frm'>
      <input id='up' name='up' type='file' />
    </form>
    <div id='out'></div>
  </div>
</body>
</html>

答案 1 :(得分:0)

我终于解决了这个问题。而不是字节数组,我使用另一个选项,base64编码字符串。 首先,我使用Ionic插件将其转换为二进制字符串(我认为javascript已经有一个API FileReader.readAsBinaryString()可以做同样的事情);第二,我只需使用btoa()将二进制字符串转换为base64编码字符串。

答案 2 :(得分:-1)

点击此处:

Local file access with javascript

直接的答案是JavaScript本身不包含文件访问权限,但是当您使用JavaScript编程时,您不是使用JUST JavaScript进行编程,而是针对某些后端进行编程。 (也许是Chrome,也许是IE,也许是Node.JS)

文件访问不是JavaScript的一部分,而是后端,它的工作方式因环境而异。

如果我提到的其他问题没有您的答案,您需要回复使用JavaScript运行的浏览器或其他框架。