我现在有一个file.mp3
文件。我需要将其转换为字节数组的格式。谁能告诉我怎么做?
问题扩展:文件不限于.mp3
格式?
除了字节数组之外,我还有一些其他选项,例如
{ base64: "..." }
这样的对象,带有base64-encoded
字符串如果从用户上传:
//<![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>
我终于解决了这个问题。而不是字节数组,我使用另一个选项,base64编码字符串。首先,我使用Ionic插件将其转换为二进制字符串(我认为javascript已经有一个API FileReader.readAsBinaryString()可以做同样的事情);第二,我只需使用btoa()将二进制字符串转换为base64编码字符串。
点击这里:
Local file access with javascript
直接的答案是JavaScript本身不包含文件访问权限,但是当您使用JavaScript编程时,您不是使用JUST JavaScript进行编程,而是针对某些后端进行编程。 (也许是Chrome,也许是IE,也许是Node.JS)
文件访问不是JavaScript的一部分,而是后端的一部分,它的工作方式因环境而异。
如果我提到的另一个问题没有您的答案,那么您需要回写一下您正在运行JavaScript的浏览器或其他框架。