SOFTELメモ

Softel Inc.

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などなら動く -->

関連するメモ

コメント