1

我正在研究html5上传脚本。我想要每个文件流块的 md5 哈希。

这是我使用 FileReader 读取流但是当我将读取器结果传递给 base64 类时出现异常。对象不支持属性或方法 'charCodeAt'

var reader = new FileReader();
reader.onload = function (f) {
var hash = MD5(Base64.encode(f.target.result));
                };
reader.readAsArrayBuffer(blob)
4

3 回答 3

3

这将完成这项工作:

代替

reader.readAsArrayBuffer(blob);

reader.readAsText(blob);

http://www.w3.org/TR/FileAPI/#dfn-readAsText

于 2012-10-23T13:30:47.900 回答
0

你应该尝试这种方式: -

function ab2str(buf) {
  return String.fromCharCode.apply(null, new Uint16Array(buf));
}

function str2ab(str) {
  var buf = new ArrayBuffer(str.length*2); // 2 bytes for each char
  var bufView = new Uint16Array(buf);
  for (var i=0, strLen=str.length; i<strLen; i++) {
    bufView[i] = str.charCodeAt(i);
  }
  return buf;
}
于 2012-10-23T13:42:03.740 回答
0

在您的情况下,Base64 是不必要的。

var reader = new FileReader();
reader.onload = function (evt) {
    var hash = MD5(evt.target.result);
};
reader.readAsText(blob,'iso-8859-1');
于 2016-07-10T11:07:35.497 回答