IEで input type=file のファイルのサイズを取得しようとしたときのメモ
セキュリティを甘くすると、下のようなVBScriptが通るらしい。
ただ、そんな環境は普通はなくて、「ActiveXコンポーネントはオブジェクトを作成できません。」と言われて、エラーになります。
<SCRIPT LANGUAGE="VBScript"> function FileSizeCheck(x) On Error Resume Next Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.Getfile(x) FileSizeCheck = f.size end function </SCRIPT> <input type="file" id="test" onchange="alert(FileSizeCheck(document.getElementById('test').value))">
VBScriptでなくて、Javascriptでもよいらしい。
function FileSizeCheck(x) { var fso = new ActiveXObject("Scripting.FileSystemObject"); var e = fso.getFile(x); return e.size; }
HTML5でFileAPIが使える環境だったらファイルのサイズぐらい簡単に取得できるのですが、いろいろなしがらみで、最新のIE限定、でも互換モード強制という環境ではどうしようもありませんでした。
FileAPIが使えたら、これだけのこと。
<input type="file" onchange="alert(this.files[0].size)"> <!-- firefoxなどなら動く -->
コメント