Javascript 以二进制数据的形式获取文件输入值

Javascript 以二进制数据的形式获取文件输入值,javascript,jquery,Javascript,Jquery,如何使用JavaScript从使用文件输入上载的文件中访问二进制表示形式 <input type="file" name="file"> 但不是真正的代表 我找到了一个教程,它利用了: document.getElementById("photo").files[0].getAsBinary() 但是,我的浏览器(OS X 10.9上的Chrome Canary 34.0.1772.0)中不存在该方法。使用FileReader API的readAsBinaryString方法 非

如何使用JavaScript从使用文件输入上载的文件中访问二进制表示形式

<input type="file" name="file">
但不是真正的代表

我找到了一个教程,它利用了:

document.getElementById("photo").files[0].getAsBinary()

但是,我的浏览器(OS X 10.9上的Chrome Canary 34.0.1772.0)中不存在该方法。

使用FileReader API的readAsBinaryString方法

非标准 此功能是非标准的,不在标准轨道上。不要在面向Web的生产站点上使用它:它不会适用于所有用户。实现之间也可能存在很大的不兼容性,并且行为可能会在将来发生变化

它建议:

注:此方法已过时;您应该改用FileReader方法readAsBinaryString()或readAsArrayBuffer()

使用FileReader:

//Retrieve the first (and only!) File from the FileList object
    var f = document.getElementById("photo").files[0]; 

    if (f) {
      var r = new FileReader();
      r.onload = function(e) { 
          var contents = e.target.result;
        alert("name: " + f.name + "n"
              +"type: " + f.type + "n"
              +"size: " + f.size + " bytesn"
              + "starts with: " + contents
        );  
      }
      r.readAsText(f);

但是,请注意,FileReaderAPI仍然是一个工作草案,因此这不会在所有浏览器中都起作用。据我所知,目前还没有支持的方法可以做到这一点,您可以考虑使用Ajax上传文件,并使用服务器端语言读取其内容?

readAsBinaryString()
根据W3C 2012年7月12日的工作草案被弃用。这个答案令人困惑。它说您应该使用
readAsBinaryString()
,但最后它根本不使用它。
//Retrieve the first (and only!) File from the FileList object
    var f = document.getElementById("photo").files[0]; 

    if (f) {
      var r = new FileReader();
      r.onload = function(e) { 
          var contents = e.target.result;
        alert("name: " + f.name + "n"
              +"type: " + f.type + "n"
              +"size: " + f.size + " bytesn"
              + "starts with: " + contents
        );  
      }
      r.readAsText(f);