function fileChange(target) {
  //验证文件类型
  var filetypes = [ ".jpg", ".jpeg", ".png", ".bmp", ".pdf", ".jiff"];
  var filepath = target.value;
  if (filepath) {
    var isnext = false;
    var fileend = filepath.substring(filepath.indexOf("."));
    if (filetypes && filetypes.length > 0) {
      for (var i = 0; i < filetypes.length; i++) {
        if (filetypes[i] == fileend) {
          isnext = true;
          break;
        }
      }
    }
    if (!isnext) {
            toastr.error("请选择.jpg, .jpeg, .png, .bmp, .pdf, .jiff格式的附件", "错误");
      target.value = "";
      return false;
    }
  } else {
    return false;
  }

  //验证文件大小
  var filemaxsize = 5;//5M 
  var isIE = /msie/i.test(navigator.userAgent) && !window.opera; 
  var fileSize = 0;
  if (isIE && !target.files) {
    var filePath = target.value;
    var fileSystem = new ActiveXObject("Scripting.FileSystemObject");
    if (!fileSystem.FileExists(filePath)) {
            toastr.error("附件不存在,请检查", "错误");
      return false;
    }
    var file = fileSystem.GetFile(filePath);
    fileSize = file.Size;
  } else {
    fileSize = target.files[0].size;
  }

  var size = fileSize / 1024 / 1024;
  if (size > filemaxsize) {
        toastr.error("附件大小不能大于" + filemaxsize + "M", "错误");
    target.value = "";
    return false;
  }
  if (size <= 0) {
        toastr.error("附件大小不能为0", "错误");
    target.value = "";
    return false;
  }
}
<input type="file" name="file" id="file" onchange="fileChange(this);" accept=".jpg,.jpeg,.bmp,.png,.pdf,.jiff"/>

注:

  1. accept属性可以让弹出的文件选择框过滤掉不相关的文件格式,但是你依然可以切换选择模式来选择其他文件格式
  2. toastr是一个消息通知插件。

参考:

  1. http://www.cnblogs.com/haocool/p/3431181.html
  2. http://www.jb51.net/article/43498.htm

发表评论

电子邮件地址不会被公开。 必填项已用*标注