如何中止/阻止/停止af:inputFile使用Javascript / JQuery上传文件?

时间:2016-01-07 03:40:56

标签: javascript jquery

我在这里看到了很多带上传文件的解决方案,但似乎对我的情况不起作用。以下是我尝试实现的方案:

  • 我想在用户选择要上传的文件后检查文件大小
  • 在JS中,它将检查是否大于(例如)100字节
    • 如果是,我想阻止它上传文件,否则上传文件就好了

文件大小验证很好,问题是,不知怎的,我无法阻止af:inputFile在退出javascript验证后上传文件。

请告诉我如何防止它从javascript / jQuery上传。

这是我的代码:

JS

$(document).ready(function () {
    $('.UploadFile input').on("change", function (e) {
      if (this.files[0] != null) {
        var fileSize = this.files[0].size;

        if (fileSize > 100) {
          alert("File too large!");
          e.preventDefault();
          return;
        }
        else {
          alert("File ok");
        }
      }
    });
    });

af:inputFile

<af:inputFile label="Upload" id="if1" autoSubmit="true"
                    styleClass="UploadFile" immediate="true"
                    valueChangeListener="#{fileBean.attachFile}">
</af:inputFile>

谢谢,

凯文

1 个答案:

答案 0 :(得分:1)

如果条件不匹配,我建议重置input type=file

$('.UploadFile input').on("change", function (e) {
    if (this.files[0] != null) {
        var fileSize = this.files[0].size;
        if (fileSize > 100) {
            alert("File too large!");
            var control=$("#"+$(this).attr('id'));//get the id
            control.replaceWith(control = control.clone().val(''));//replace with clone
            return;
        }
        else {
            alert("File ok");
        }
    }
});
  

另请注意this.files[0].size返回文件大小   的 bytes 即可。因此,根据您的验证,您不允许上传大小超过100 bytes

的文件