在这个页面
http://www.html5rocks.com/en/tutorials/file/dndfiles/如果你向下滚动到示例“示例:切片文件,尝试!您将看到readAsBinaryString API的使用来读取本地文件的字节.
我看过IE(我的case它的IE11)不支持readAsBinaryString.
即使在HTML5 File API read as text and binary帖子中提到的这个代码在IE11中的readAsBinaryString中断.
我看到一些堆栈溢出的帖子,建议使用ReadAsArrayBuffer().但它也没有工作.它返回未定义.
如果我必须在IE11上运行,我的问题是什么选择?可以编写另一个IE兼容的JS函数,它将执行readAsBinaryString()的JOB.
解决方法
这是我的解决方案.
var reader = new FileReader(); reader.readAsBinaryString(fileData); reader.onload = function(e) { if (reader.result) reader.content = reader.result; var base64Data = btoa(reader.content); //... } //extend FileReader if (!FileReader.prototype.readAsBinaryString) { FileReader.prototype.readAsBinaryString = function (fileData) { var binary = ""; var pt = this; var reader = new FileReader(); reader.onload = function (e) { var bytes = new Uint8Array(reader.result); var length = bytes.byteLength; for (var i = 0; i < length; i++) { binary += String.fromCharCode(bytes[i]); } //pt.result - readonly so assign binary pt.content = binary; $(pt).trigger('onload'); } reader.readAsArrayBuffer(fileData); } }