Java文件上传验证最佳实践

Java文件上传验证最佳实践,java,validation,gwt,file-upload,server-side,Java,Validation,Gwt,File Upload,Server Side,我正在GWT中实现一个简单的图像上传小部件。在成功上载之前,需要执行一些基本验证,如: 大小 文件类型 进行此验证的最佳位置是什么? 据我所知,大小和类型验证只能在服务器端完成。 即servlet(MyUploadServlet扩展了HttpServlet)执行文件的实际上载。 那是唯一的地方吗?进行此类验证的最佳实践是什么 另外,如果我能得到验证代码(图像文件类型和大小),那就太好了:)在服务器端可以更好地完成验证。 基本上,我建议您使用两个步骤进行尺寸验证: 1) 验证HTTP头的内容长度。

我正在GWT中实现一个简单的图像上传小部件。在成功上载之前,需要执行一些基本验证,如:

  • 大小
  • 文件类型
  • 进行此验证的最佳位置是什么?
    据我所知,大小和类型验证只能在服务器端完成。
    即servlet(MyUploadServlet扩展了HttpServlet)执行文件的实际上载。
    那是唯一的地方吗?进行此类验证的最佳实践是什么


    另外,如果我能得到验证代码(图像文件类型和大小),那就太好了:)

    在服务器端可以更好地完成验证。 基本上,我建议您使用两个步骤进行尺寸验证:

    1) 验证HTTP头的内容长度。request.getContentLength()

    2) 如果标题不可用,则在读取输入流时执行实际大小验证。因此,如果达到限制,可以抛出异常

    在gwt客户端,您可以验证异常并显示相应的错误


    确定文件类型可能不是那么简单。在文件实际上传到服务器上后,您可以只检查文件扩展名或使用特定于文件类型的验证

    验证可以更好地在服务器端完成。 基本上,我建议您使用两个步骤进行尺寸验证:

    1) 验证HTTP头的内容长度。request.getContentLength()

    2) 如果标题不可用,则在读取输入流时执行实际大小验证。因此,如果达到限制,可以抛出异常

    在gwt客户端,您可以验证异常并显示相应的错误


    确定文件类型可能不是那么简单。在文件实际上传到服务器上后,您可以只检查文件扩展名或使用特定于文件类型的验证

    HTML5对文件API提供了多种支持,这意味着一些浏览器在与服务器对话之前可以为您提供上传文件的大小。如果您可以假设您正在使用的浏览器的某些内容,您可能希望搜索类似于
    HTML5文件api大小的内容,看看您是否能够在您的案例中使用它。

    HTML5对文件api有各种各样的支持,这意味着一些浏览器将能够在交谈之前为您提供上传文件的大小到服务器。如果您可以假设您正在使用的浏览器的某些内容,那么您可能希望搜索类似于
    HTML5文件api大小的内容,看看您是否能够在您的案例中使用它。

    谢谢Alexey。我更感兴趣的是我们应该遵循什么样的最佳实践(在代码组织方面)来进行这样的验证,就像应该有一个不同的验证器类一样?或者它可以在同一个servlet中?验证值应该来自哪里-spring文件还是其他地方?希望这次我能解释一下:)如果你使用spring,你可以使用SpringMVC进行上传处理。在spring配置中,您应该定义一个MultipartResolver:
    ,这样spring框架将负责验证。这是一篇关于这个主题的好文章,谢谢Alexey,这将很有帮助。我会试试这个。再次感谢!谢谢阿列克西。我更感兴趣的是我们应该遵循什么样的最佳实践(在代码组织方面)来进行这样的验证,就像应该有一个不同的验证器类一样?或者它可以在同一个servlet中?验证值应该来自哪里-spring文件还是其他地方?希望这次我能解释一下:)如果你使用spring,你可以使用SpringMVC进行上传处理。在spring配置中,您应该定义一个MultipartResolver:
    ,这样spring框架将负责验证。这是一篇关于这个主题的好文章,谢谢Alexey,这将很有帮助。我会试试这个。再次感谢!