[编辑]
如上面的评论所述,尽管仍在某些UA实现中,
readAsBinaryString方法尚未达到规格要求,因此不应在生产中使用。而是使用
readAsArrayBuffer并遍历它
buffer来获取二进制字符串:
document.querySelector('input').addEventListener('change', function() { var reader = new FileReader(); reader.onload = function() { var arrayBuffer = this.result, array = new Uint8Array(arrayBuffer), binaryString = String.fromCharCode.apply(null, array); console.log(binaryString); } reader.readAsArrayBuffer(this.files[0]);}, false);<input type="file" /><div id="result"></div>对于将二进制数组转换为arrayBuffer的更可靠的方法。
[旧答案] (已修改)
是的,
<input type="file"/>感谢FileReader对象及其method,文件API确实提供了一种将File中的文件转换为二进制字符串的方法
readAsBinaryString。
[ 但是不要在生产中使用它! ]
document.querySelector('input').addEventListener('change', function(){ var reader = new FileReader(); reader.onload = function(){ var binaryString = this.result; document.querySelector('#result').innerHTML = binaryString; } reader.readAsBinaryString(this.files[0]); }, false);<input type="file"/><div id="result"></div>如果需要数组缓冲区,则可以使用
readAsArrayBuffer()方法:
document.querySelector('input').addEventListener('change', function(){ var reader = new FileReader(); reader.onload = function(){ var arrayBuffer = this.result; console.log(arrayBuffer); document.querySelector('#result').innerHTML = arrayBuffer + ' '+arrayBuffer.byteLength; } reader.readAsArrayBuffer(this.files[0]); }, false);<input type="file"/><div id="result"></div>


