IEで input type=file のファイルのサイズを取得しようとしたときのメモ
2012/05/24
html
セキュリティを甘くすると、下のような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などなら動く -->