JavaScriptにはBase64エンコード関数がない!!
XMDOM内蔵されている。
XMDOM内蔵のものがあった。Base64を使う。これ楽ちん。
ソースコードbase64.js
var utena = {}; utena.base64encode = function (data) { var xml_dom = new ActiveXObject("Microsoft.XMLDOM"); xml_dom.loadXML('<?xml version="1.0" ?> <root/>'); xml_dom.documentElement.setAttribute("xmlns:dt", "urn:schemas-microsoft-com:datatypes"); var node1 = xml_dom.createElement("file1"); node1.dataType = "bin.base64"; node1.nodeTypedValue=data; xml_dom.documentElement.appendChild(node1); return node1.text; }
WSHのJScriptはバイナリ読めません。
読めません。本当です。困りました。WindowsScriptという名前ですが、バイナリ扱えません。Fileオブジェクトはテキストが前提です。画像ファイルのBase64エンコード試みた。が、バイナリ読めない。
ADODB.Stream使います。
WSHでは、ADODB.Streamでバイナリ扱います。頻出回答ですね。
バイナリ読込例 (base64.js続き)
バイナリを読み込んでBase64エンコードする。前述コードの続き
var fso = new ActiveXObject('Scripting.FileSystemObject'); var stream = new ActiveXObject('ADODB.Stream'); stream.Type=1;//1=binary,2=text stream.Open(); stream.LoadFromFile(fso.GetAbsolutePathName("fooooo.png")); var bin = stream.Read(-1);//-1:read all , -2 : read line var ret =utena.base64encode(bin);
Windows自動化。
JavaScriptでWindowsを自動化するのがマイブーム。WSH技術は枯れてて使いやすい。