【问题标题】:Validate File before getting uploaded using h:inputFile and javax.servlet.http.Part in JSF在 JSF 中使用 h:inputFile 和 javax.servlet.http.Part 上传之前验证文件
【发布时间】:2015-01-04 00:49:00
【问题描述】:

我正在开发一个 JSF 网络项目,该项目使用 h:inputFile 工具上传文件。我将 h:inputFile 的值绑定到支持 bean 属性输入 javax.servelt.http.Part

<h:inputFile id="inputfile" validator="#{bean.validateFile}" value="#{bean.part}"/>

我还在同一个支持 bean 中使用以下文件验证策略:

 public void validateFile(FacesContext con, UIComponent comp, Object value) {
    Part p = (Part) value;
    List<FacesMessage> list = new ArrayList<>();
    if (p.getSize() == 0) {
        list.add(new FacesMessage("File Size too small"));
    }
    if (p.getSize()>MAXSIZE) {
        list.add(new FacesMessage("File Size too Big"));
    }
    if (!list.isEmpty()) {
        throw new ValidatorException(list);
    }
}

我的问题: 使用 Part 接口是否会导致整个文件上传到服务器端,THEN 它会在提交表单时得到验证(即其大小)?

当我在本地主机(Glass fish v.4)中体验它时,我在 Chrome 浏览器的左角看到一条消息,指示文件上传进度,之后如果文件验证错误,我会得到验证消息。我担心在实际情况下(例如互联网连接速度慢),上传文件后发送大小验证错误是一种非常不方便的方式!

请帮助我,如果是我认为的情况,请发送替代解决方案。

提前致谢!

【问题讨论】:

    标签: java validation jsf jsf-2


    【解决方案1】:

    这是正常行为。服务器需要访问文件来验证它(内容、大小......),并且只能通过用户交互来授予访问权限,例如表单提交。

    见:ICEFaces inputFile getting the file content without upload

    【讨论】:

    • 在提交实际上传之前,是否有任何方法可以在客户端(即使用客户端技术)至少获得文件大小?
    猜你喜欢
    • 2015-01-03
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    相关资源
    最近更新 更多