【问题标题】:How to get file size before uploading?上传前如何获取文件大小?
【发布时间】:2011-06-03 22:06:36
【问题描述】:

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

我找到了Check file size before uploading file,但该脚本不适用于 Internet Explorer 6、7 或 8。我还没有测试过 IE 9。我正在寻找一个可以在任何浏览器上正常工作的脚本。

【问题讨论】:

  • Internet Explorer 是浏​​览器吗?我以为它只是一个下载真实浏览器的工具...
  • 是的,它只是一个工具,但有些用户使用它......

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


【解决方案1】:

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

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

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

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

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

【讨论】:

    【解决方案2】:

    我把这个答案加给大家以后可以用了:

    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" >
    

    【讨论】:

      猜你喜欢
      • 2011-05-10
      • 2011-11-21
      • 2018-11-10
      • 2020-01-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多