■ 読み取りテスト
ファイルのバイナリを、先頭から指定分、表示する。
または、HTTPリクエストから同様に、バイナリまたはテキストを表示する。
切り替えチェック、○ファイルのバイナリ ○HttpRequest
ローカルファイルを対象とするか、HTTPリクエストするかを、切り替える。
KB 入力欄
バイナリ表示を、どこまでするかの指定。
初期値は、変数の設定箇所(または同名の.jsファイル)で変更可能。
HttpRequest で、バイナリ表示の時に、これは、どこまで表示するかであって、
Request の量(範囲)の指定ではない。
Request の方を指定したい場合は、手動で、setHeader チェックを付け、
リクエストヘッダ入力欄に、例えば、1 KB 指定するなら、
Range: bytes=0-1023 と入力する。但し結果は、サーバの対応次第。
ファイルのバイナリ表示の方は、ブラウザでは、File(Blob)の slice メソッドで、
取り出してから FileReader で読み取りを行っている。
HTA では、ADODB.Stream の Read メソッドで指定の所まで読む。
[C]ボタン
結果表示を、消す。
[説明]ボタン
この部分を表示する、または隠す。
▼ ファイルのバイナリ表示
ブラウザでは、ファイルの指定は、
ファイル選択欄(ダイアログボックス)を使うか、
横の囲みの中へアイコンを落とす。
(以前の Opera では、囲みへアイコンを落とすと、「localhostへ…アップロード
するか」というよく分からないダイアログが出るが、[はい]を押す。)
パスからファイルを指定するという事は、出来ない。
ファイルの読み取りには、FileReader を、
落としたアイコンからファイルを得るには、dataTransfer.files を利用。
Firefox, Chrome, Opera で使用可能を確認(2013)。
IE 9 以下は使用不能。IE 10 からサポートされているらしい。
HTA で、対象のファイル指定は、
入力欄にパスを書き入れ、[読む]ボタンを押す。
または、[File..]ボタンを押し、ファイル選択欄を出す。
または、アイコン投入口(ActiveXコントロール)を使う。
但し、窓中の窓の時、アイコン投入口は、使用不能なため表示しない。
入力欄の場合は、[読む] ボタンを押して実行する。
HTA の時は、ファイルの読み取りに ADODB.Stream を使用。
[テキスト..] ボタン
文字コードを指定し、テキストとして表示する。HTA のみ。
▼ HttpRequest
URL を入力し、[要求](Request)ボタンを押す。
ブラウザで、ローカルファイルとしての、これを開いている場合に、
Web に対してリクエストは、IE 以外では普通、出来ないようである。
IE は( 11 でも、以前の XMLHTTP を使う場合でも)、
ローカルから Web へリクエストは可能。(Edge では不可)。
Chrome は、起動オプション --disable-web-security で可能になる。
他のブラウザについては分からない。
同じローカルにあるファイルへのリクエストに対しても、制限がある。
Firefox では、このファイル自身のある場所の中のファイルしか読めない。
(相対パスは可。ドライブ名から始まるパスは使えない。ドライブ名の前に、
ルートなどの斜線(/)を付けるか、file:プロトコルから始める。)
Chrome では、起動時にオプション -allow-file-access-from-files の指定が
必要。或いは、--disable-web-security でも?。
( FileReader による読み取りには、この制限は関係ない。)
以前の Opera では、opera:config#UserPrefs|AllowFileXMLHttpRequest
とアドレス欄に入れ、設定ページを開き、
Allow File XMLHttpRequest にチェックして[保存]で、読み取り可能に。
(ファイルの指定に、ドライブ名から始まるパスは使えない。)
IE と Edge では、ローカルファイルは読み取れない。
(「アクセスが拒否されました。」というエラーに)
以前の IE で、XMLHTTP を使う場合は、読み取り可能。
HTA では、Web も、自身と同じローカルのファイルも、リクエスト(取得)できる。
( ローカルファイルの読み取りは、ActiveXObject の XMLHTTP を使うように
しているので可能であるが、XMLHttpRequest を使うとだめらしい。
Web へはどちらでも可。)
これが、Web にある場合は、
違うドメイン(サイト)へは、リクエストできない(しても無効、空が返る)。
( クロスドメインとか、同一オリジンとかの制限で )
Chrome は、起動オプション --disable-web-security で、
別のドメインへリクエスト可能になる。
(が、ローカルのファイルをリクエストする事は、出来ないようである。)
切り替えチェック、表示 ○バイナリ ○テキスト
レスポンスの内容を、バイナリで表示するか、テキストを表示するかの選択。
バイナリ表示、
Firefox, Chrome, Safari, Opera で可能。IE は多分、10 以降。
ただし、非同期モードでは出来るが、同期ではだめだと言われたりするが、
ブラウザにより、file: が対象なら同期でも出来たりする。
バイナリを解析するには、ブラウザでは、JavaScript の TypedArray
(型指定の配列)を使用。 IE は、10 からサポートされているらしい。
HTA の時は、IE 7 であるので、TypedArray は無い為、
ActiveXObject の ADODB.Stream を使っている。
テキスト表示、
表示量の制限は、横の文字数入力欄で指定。
文字コードを指定したいなら、横の charset:入力欄に予め入れて置く。
( 後から変更する方法は判らない。)
( HTA の時、この入力欄はなく、代わりに [文字コード]ボタンあり。)
この時のレスポンスヘッダの Content-Type: text/plain; charset=〜〜 は、
サーバーが返したものでなく、この overrideMimeType 指定による。
この欄への入力文字列中に / が含まれていたら、MimeType の指定と取り、
それを、そのまま overrideMimeType に設定する。
( この欄は、[Ctrl]+[+] キーで、サイズを拡大可能にしてある。)
HTA の時の [文字コード]ボタンは、
[要求]ボタンを押した後(結果を表示した後)に、使う。
やり直し可能。バイナリ表示の時でも、使用できる。
非同期 チェック
チェックあれば、非同期でリクエストする。
setHeader チェック
チェックすると、リクエストヘッダ入力欄を表示する。
この入力欄では、名前: 値 と入れて改行で区切る。
リクエストボディも、この入力欄へ、ヘッダとは空行で区切って入れる。
( 改行が連続している所から後を、ボディと取る。)
[保存..] ボタン
HTA の場合、レスポンス(のバイナリ)を、ファイルに保存する。
既存の名前を指定するとエラーになる(上書き出来ない設定にしてある)ので、
新しい名前を指定する必要あり。
[文字コード..] ボタン
HTA の場合、指定した文字コードで再表示する。( 予めの指定は不明。)
ダイアログ(prompt)を出すが、入力が空で、OK した時、
"_autodetect" をデフォルト値に使うようにしているので、
Shift_JIS を指定したいなら、空で OK すれば良い、多分。
-----------------------------------------------------------------------
修正・変更
2012年4月9日
XMLHTTP の読み取りの方で、
[読む] を押した時、input text の値でなく、this.value を渡していたのを修正。
また、input file を、FORM要素の中に入れるようにし、逐一 reset() して、
続けて同じ選択をしても onchange が起きるように変更した。
[文字コード]、[テキスト] ボタンを追加。
文字セットを指定して、再表示できるようにした。
( "ADODB.Stream" の .Type を変更する前に、.Position を戻さないとならない
のを分からず、今までバイナリストリームを、テキストにする事が出来なかった。)
2013年4月
ファイルのバイナリ表示を、Chrome, Firefox でも出来るようにした。
HTTPRequest の方のバグなどを修正し改良。
( Chrome, Firefox での文字コードの指定などを追加。)
2016/11~12月
IE 10 以降への対応、テスト欄など修正。
------------------------------------------------------------
IE と Edge の複数行テキスト入力欄(TextArea)にて、キー操作
Ctrl+1, Ctrl+2, Ctrl+3, Ctrl+4, Ctrl+[;+], Ctrl+[-] で、
欄(フィールド)の高さ、幅を変更できるようにしてみたが、
IE 11 で幅を増やす指定が、うまくいかない (指定値の数分の1しか変化しない)。
(ドキュメント・モードで試すと、IE 9 以降でそうなる。)
HTA や IE 7, 8 で、Ctrl+[;+], Ctrl+[-] のデフォルト動作
(ページの拡大・縮小)をキャンセルできないかも知れない。
(他のブラウザはマウスで、欄サイズを変更できるので、これらは設定してない。)