Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript chrome-only文件阅读器错误_Javascript_Html_Google Chrome_Filereader - Fatal编程技术网

Javascript chrome-only文件阅读器错误

Javascript chrome-only文件阅读器错误,javascript,html,google-chrome,filereader,Javascript,Html,Google Chrome,Filereader,我试图读入一个文件并计算SHA-256哈希。 该代码在localhost上运行得非常好(Chrome和Safari) 一旦我将页面上传到Web服务器上,Google Chrome就会出现以下错误: 未捕获的TypeError:无法读取未定义的属性“摘要” 在FileReader.reader.onload(hashDocument.js:40) 然而,该网页在Safari和Android设备上都能正常工作 function convertStringToArrayBufferView(str)

我试图读入一个文件并计算SHA-256哈希。 该代码在localhost上运行得非常好(Chrome和Safari)

一旦我将页面上传到Web服务器上,Google Chrome就会出现以下错误:

未捕获的TypeError:无法读取未定义的属性“摘要” 在FileReader.reader.onload(hashDocument.js:40)

然而,该网页在Safari和Android设备上都能正常工作

function convertStringToArrayBufferView(str)
{
    var bytes = new Uint8Array(str.length);
    for (var iii = 0; iii < str.length; iii++)
    {
        bytes[iii] = str.charCodeAt(iii);
    }
    return bytes;
}

function convertArrayBufferToHexaDecimal(buffer)
{
    var data_view = new DataView(buffer);
    var iii, len, hex = '', c;

    for(iii = 0, len = data_view.byteLength; iii < len; iii += 1)
    {
        c = data_view.getUint8(iii).toString(16);
        if(c.length < 2)
        {
            c = '0' + c;
        }
        hex += c;
    }
    return hex;
}

function hashIt() {
  var nBytes = 0,
      oFiles = document.getElementById("documentIn").files,
      nFiles = oFiles.length;
  for (var nFileId = 0; nFileId < nFiles; nFileId++) {
      //console.log(oFiles[nFileId]);

      var reader = new FileReader();

      reader.onload = function(e) {
      var text = reader.result;
      var promise = crypto.subtle.digest({name: "SHA-256"},   convertStringToArrayBufferView(text));

    promise.then(function(result){
      var hashValue = convertArrayBufferToHexaDecimal(result);
      // update input field
      console.log("hashValue");
      $("#documentHash").val(hashValue);
    });

};

reader.readAsText(oFiles[nFileId]);

    nBytes += oFiles[nFileId].size;
  }
}
函数convertStringToArrayBufferView(str)
{
var bytes=新的Uint8Array(str.length);
对于(变量iii=0;iii
在Chrome中,一些加密方法/属性仅在https连接上可用,
crypto.Divertive
就是其中之一。谢谢你的解释!在不提供https的情况下是否有解决方法?一种可能是使用该算法的替代实现。一点网络搜索可能会暗示,但我不能保证。