web-dev-qa-db-ja.com

Javascript FileReader base64文字列から型を削除する方法は?

Javascriptに次のコードがあります。

_var reader = new FileReader();
reader.onloadend = function () {
    alert(reader.result);
};
_

これにより、次のデータが表示されます。

_ data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAAAAABX3VL4AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gYSDCUgSze0AAAAAA5JREFUCNdjrGJgYmAAAAJ0AH4SDHVIAAAAAElFTkSuQmCC
_

問題は、コンマの後の部分だけが必要なことです。 _reader.result.value_、reader.result.valueOf()およびその他の組み合わせから取得しようとしましたが、コンマの後から始まるbase64文字列を取得するための正しい組み合わせが見つかりません。 2番目のアイデアは、カンマとその前のものをすべて取り除くことです。しかし、私はそれをどうやってやるかわからないのです。

誰もこれを達成する方法を知っていますか?すべてのヒントを歓迎します!

45
kramer65

次の関数は、目的の結果を達成します。

var base64result = reader.result.split(',')[1];

これは、data:image/png;base64を含む最初の項目(インデックス0)とbase64エンコードデータを含む2番目の項目(インデックス1)を持つ文字列の配列に文字列を分割します。

別の解決策は、カンマのインデックスを見つけてから、カンマを含む前のすべてを単純に切り捨てることです。

var base64result = reader.result.substr(reader.result.indexOf(',') + 1);

JSFiddle を参照してください。

83
let reader: FileReader = new FileReader();

 reader.onloadend = (e) => {
    let base64String = reader.result.split(',').pop();
 };

または

let base64String = /,(.+)/.exec(reader.result)[1];
18
Oleh Leskiv