web-dev-qa-db-ja.com

Javascript-文字列からblobを作成しましたが、文字列を元に戻すにはどうすればよいですか?

Blob()を呼び出した文字列があります:

var mystring = "Hello World!";
var myblob = new Blob([mystring], {
    type: 'text/plain'
});
mystring = "";

文字列を元に戻すにはどうすればよいですか?

function getBlobData(blob) {
    // Not sure what code to put here
}
alert(getBlobData(myblob)); // should alert "Hello World!"
39
Joey

Blobからデータを抽出するには、 FileReader が必要です。

var reader = new FileReader();
reader.onload = function() {
    alert(reader.result);
}
reader.readAsText(blob);
47
Philipp

ブラウザーがサポートしている場合、blob [〜#〜] uri [〜#〜]およびXMLHttpRequest it

function blobToString(b) {
    var u, x;
    u = URL.createObjectURL(b);
    x = new XMLHttpRequest();
    x.open('GET', u, false); // although sync, you're not fetching over internet
    x.send();
    URL.revokeObjectURL(u);
    return x.responseText;
}

それから

var b = new Blob(['hello world']);
blobToString(b); // "hello world"
13
Paul S.

@joeyは@philippの答え​​を関数でラップする方法を尋ねたので、これを現代のJavascriptで行うソリューションを以下に示します(@Endlessに感謝)。

const text = await new Response(blob).text()
8
kpg