倒れこむ

F.Uは蒸発しました。なんか書きます。

続 javascript(+html5)だけで 読み込まれたファイルのmd5ハッシュを取る

もう省略されすぎてて意味がわからないと思う人には申し訳ない

md5が上手く取れないので原因を調べた、というかフォロワーから指摘されたところがありまして

FileReaderオブジェクトのreadAsTextがどうもよくないらしい。2バイト文字が絡んでくるとjavascript上で扱うのにズレが生じてmd5もズレる。じゃあバッファーで取得すればよろしい。

つまりreadAsBinaryStringを使えばいいんじゃ(天才)と思ったらこれは非推奨メソッドらしい。今後廃止される予定ってMDNに書いてる(ちゃんと読んでない)。

どないすんじゃい!と調べたら、readAsArrayBufferを使えばいいらしい。さっきかららしいしか言ってないけど本当に理解してないかららしいとしか言えない。

その名の通りArrayBuffer型でe.target.resultが取得出来て、じゃあArrayBufferを扱うには何をすればエエのかといいますと、ArrayBufferViewっていうサブクラスを使う。

JavaScriptプログラミング講座【ArrayBuffer クラスについて】

ここにのってるので要チェック。更に便利なDataViewという奴もあるらしい。

で、読み取ったファイル内容に対して正規表現で文字列操作もしたかったので天才の方がtoStringみたいな奴作ってた奴も参照

ArrayBuffer/String conversion · jsPerf

このab2str_arraymanipulation()を利用して変換したんですが、Uint16Arrayじゃダメだった。Uint8Arrayなら綺麗にとれたけどここが何故かよくわからない。いやホントーにわからん。だれか教えて!

 

 

頭硬すぎてお話にならない(完)