如何在上传之前获取文件大小?

时间:2011-06-03 22:06:36

标签: file-upload filesize input-type-file

在通过浏览器上传文件之前,有没有办法获得文件的大小?

我找到了Check file size before uploading file,但该脚本不适用于Internet Explorer 6,7或8.我没有使用IE 9进行测试。我正在寻找一个适用于任何浏览器的脚本。

2 个答案:

答案 0 :(得分:1)

如果您愿意引入对Flash的依赖,那么您可以使用它来获取文件大小(并处理上传)。

Flash支持通过FileReference class进行文件选择,这样您就可以访问一些元数据,包括文件大小。

ExternalInterface class的帮助下,您可以调用JavaScript函数并为其提供此信息。

如果文件大小合适,您可以从Flash上​​传文件而不是使用通常的输入元素。

查看YUI的uploader,了解一个非常易于使用且记录完备的免费组件,它可以为您处理所有这些(您只需要编写一些JavaScript,并且可以设置预先构建的Flash样式你想要的组件。)

答案 1 :(得分:0)

我将此答案添加到每个人之后可以使用:

function findSizeandalert() {
    var fileInput =  document.getElementById("fileupld");
    try{
        var fsize = fileInput.files[0].size; // Size returned in bytes.
        var fsizekb = fsize/1024;  // Size Convert to KBytes.

        if(fsizekb>100){
            alert("Your File size is more than specific size; Size of your file"+fsizekb.toFixed(2)+" KB");
            return false;
        }
    }catch(e){
        var objFSO = new ActiveXObject("Scripting.FileSystemObject");
        var e = objFSO.getFile( fileInput.value);
        var fileSize = e.size;
        var fsizekb = filesize/1024;

        if(fsizekb>100){
            alert("Your File size is more than specific size; Size of your file.(CC)"+fsizekb.toFixed(2)+" KB"); 
            return false;
        }
    }
    return true;
}

然后在onsubmit事件的形式中:

 <form method="post" enctype="multipart/form-data" name="frm_upload" onSubmit="return findSizeandalert()">
    <input id="fileupld"  type="file" name="fupl" accept="image/x-png,image/jpeg" >