文件上载大小验证不适用于IE

时间:2013-07-31 05:13:33

标签: jquery internet-explorer

您好我使用jQuery实现了上传最大文件大小验证,并且它在正常工作   Chrome和Firefox在IE中无法正常工作

$('#file').change(function() {           
         fileSizeError = (this.files[0].size/(1024*1024) > 1) ? true : false;
    });

请帮我解决这个问题

谷歌搜索后,我找到了一个创建ActiveXObject的解决方案。代码在

下面
var myFSO = new ActiveXObject("Scripting.FileSystemObject");
        var filepath = document.upload.file.value;
        var thefile = myFSO.getFile(filepath);
        var size = thefile.size;
        alert(size + " bytes"); 

但我无法创建一个ActiveXObject我的目标是这个代码适用于IE和   其他浏览器也是。

1 个答案:

答案 0 :(得分:0)

**You can check this file size in server side using jquery webmethod**

如hoodedperson70 here所述:

  

当然,这是一个例子,但我无法测试......它应该有效   虽然:

<html>
<head>
  <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
  <script type="text/javascript" src="ajaxfileupload.js"></script>
  <script type="text/javascript">
      $(document).ready(function () {
          $("#submit1").click(function () {
              var file == $("#file1");
              if (file.value = "" || file.value == null)
              {
                  alert("You must provide a file.");
              }
              else
              {
                  ajaxFileUpload();
              }
          });
      });

      function ajaxFileUpload()
      {
          //starting setting some animation when the ajax starts and completes
          $("#loading").ajaxStart(function () {
              $(this).show();
          })
          .ajaxComplete(function () {
              $(this).hide();
          });

          /*
              preparing ajax file upload
              url: the url of script file handling the uploaded files
              fileElementId: the file type of input element id
              dataType: it supports json, xml
              secureuri: use secure protocol
              success: call back function when the ajax complete
              error: callback function when the ajax failed
          */
          $.ajaxFileUpload
          (
              {
                  url: 'THE WEB SERVICE URL',
                  secureuri: false,
                  fileElementId: 'file1',
                  dataType: 'json',
                  success: function (data, status)
                  {
                      if (data.success == "true")
                      {
                          $("#results").html("Valid file size, " + data.length);
                      }
                      else
                      {
                          $("#results").html("Invalid file size, " + data.length);
                      }
                  },
                  error: function (data, status, e)
                  {
                      alert(data + ", " + e);
                  }
              }
          )

          return false;
      }
  </script>
</head>
<body>
  <form id="form1" method="POST" action="" enctype="multipart/form-data">
      <input type="file" id="file1" name="file1" />
      <input type="button" id="submit1" name="submit1" value="Upload (size will be checked)" />
      <img src="loading.gif" alt="Loading" id="loading" style="display:none;" />
      <br /><br /><br />
      <div id="results"></div>
  </form>
</body>
</html>
     

这是网络服务代码:

[WebMethod]
public string CheckFileSize(HttpContext context)
{
  var file1 = context.Request.Files[0];

  if (file1 != null && file1.ContentLength > 0)
  {
      if (file1.ContentLength > 1024) // This is the IMPORTANT comparison
      {
          return "{\"success\":\"true\",\"length\":\"" + file1.ContentLength + "\"}";
      }
      else
      {
          return "{\"success\":\"false\",\"length\":\"" + file1.ContentLength + "\"}";
      }
  }
}
     

您需要点击此链接:   http://www.phpletter.com/download_project_version.php?version_id=34来   下载.js文件和“loading.gif”文件。就我的例子而言,他们   在同一个目录中,但你可能没有,所以你需要   如有必要,改变他们的路径。

     

我没有意识到他们使用PHP作为处理,但这应该   仍然工作相同。 javascript应该能够提交   文件到任何类型的技术,所以它取决于Web服务   逻辑。使用HttpContext很可能不适合   这种情况,但你可以测试一下。

客户端验证不仅仅是方法

否则,只需这样尝试

if (FileUpload1.PostedFile.ContentLength > 5120) // 5120 KB means 5MB
            {
                //Display a warning
                Page.ClientScript.RegisterClientScriptBlock(typeof(Page), "Alert", "alert('File is too big')", true);
            }
            else
            {
                //save the file here


            }