JavaScriptによるファイルとバイナリデータの扱い
html
<input type="button" value="TEST1" onclick="test1()" /> <a id="txt_dl" href="" >ダウンロード</a><br>
javascript
function test1(){
var text1 = "いろは";
// utf8からbase64に変換する。
var b64 = utf8_to_b64(text1);
// Blobを BASE64とMIMEコンテンツタイプから作成する。
var mime_ctype = "text/plain";
var blob = toBlob(b64,mime_ctype);
// BlobURLスキームをBlobから作成する。
var blob_url = window.URL.createObjectURL(blob);
// a要素にBlobURLスキームをセットしてダウンロードできるようにする。
$('#txt_dl').attr('href',blob_url);
$('#txt_dl').attr('download','test.txt');
}
// BASE64とMIMEコンテンツタイプからBlobオブジェクトを作成する
function toBlob(base64,mime_ctype) {
// 日本語の文字化けに対処するためBOMを作成する。
var bom = new Uint8Array([0xEF, 0xBB, 0xBF]);
var bin = atob(base64.replace(/^.*,/, ''));
var buffer = new Uint8Array(bin.length);
for (var i = 0; i < bin.length; i++) {
buffer[i] = bin.charCodeAt(i);
}
// Blobを作成
try{
var blob = new Blob([bom,buffer.buffer], {
type: mime_ctype,
});
}catch (e){
return false;
}
return blob;
}
// utf8からbase64に変換する
function utf8_to_b64(str) {
return window.btoa( unescape(encodeURIComponent( str )) );
}