ローカルのバイナリをBASE64エンコード
XMLHttpRequest#overrideMimeType使ってるからMozilla Firefox限定な上に、ファイルパス直書きなので、超不便。何とかしたい。XPCOMを使えばいいのかなあねむい。
<!DOCTYPE html> <title>base64</title> <textarea id="t" rows="2" cols="20"></textarea> <script type="text/javascript" src="base64.js"></script> <script type="text/javascript"> (function() { var f = 'filepath', t = document.getElementById('t'), r = new XMLHttpRequest(); r.open('GET', f, false); r.overrideMimeType('text/plain; charset=x-user-defined'); r.send(null); for (var i = 0, b = [], s = r.responseText, l = s.length; i < l; i++) { b.push(s.charCodeAt(i) & 0xff); } t.value = base64encode(String.fromCharCode.apply(String, b)); t.select(); })(); </script>
ref.
WSH版
<?xml version="1.0" encoding="utf-8"?> <job> <object id="dom" progid="Microsoft.XMLDOM"/> <object id="ado" progid="ADODB.Stream"/> <reference object="ADODB.Stream"/> <script language="JScript"><![CDATA[ (function() { var path = WSH.arguments(0); ado.open(); ado.type = adTypeBinary; ado.loadFromFile(path); var binary = ado.read(); ado.close(); var element = dom.createElement('tmp'); element.dataType = 'bin.base64'; element.nodeTypedValue = binary; WSH.echo(element.text.replace(/\n|\r\n?/g, '')); })(); ]]></script> </job>
@echo off setlocal cscript //Nologo base64.wsf base64.wsf > base64.log endlocal echo on