每当我选择一个大小超过50MB的文件上传时,我的JBoss服务器就会抛出异常并挂起JSP。所以,我不必在java服务器端验证文件大小,而必须在客户端验证它。但我找不到任何适当的方法。有人能帮助我吗?我无法使用任何Flash上传功能。客户端文件大小验证javascript
回答
您不希望为此使用客户端验证。无论如何,JS不能访问文件元数据,但JS也可以关闭甚至完全欺骗。
至于具体的问题,听起来很像你解析上传文件而不是普通的Java(Servlet)类文件。由于JSP作为HTTP响应的视图技术部分,任何在JSP输出中途抛出的异常,服务器都无法将HTTP响应更改为错误页面。客户端很可能最终会产生带有半烘焙HTML源代码的空白页面,因为JSP输出突然中止。
要解决这个问题,您应该是avoiding Java code in JSP files,并将Java代码放入普通Java类中。在这种情况下,您想使用servlet。让表单提交到servlet而不是JSP。
<form action="uploadServlet" method="post">
下面是其doPost()
方法应该怎么看起来像一个开球例如:
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
// Parse file upload.
// At end, forward request/response to JSP to present results in HTML.
request.getRequestDispatcher("/WEB-INF/results.jsp").forward(request, response);
} catch (FileUploadException e) { // Or whatever exception it is throwing.
throw new ServletException("File upload failed", e);
}
}
这样的异常将在默认的HTTP 500错误页面,你可以自定义为以任何方式在web.xml
如下结束
<error-page>
<exception-type>com.something.FileUploadException</exception-type>
<location>/someFileUploadErrorPage.jsp</location>
</error-page>
或者,而不是抛出ServletException
,你也可以只设置错误信息作为属性和FORW指向相同的JSP,并让它以用户友好的方式以相同的形式显示错误。您可以在我们的servlet wiki page中获得一般想法。
嗨,谢谢你的回复... 但是你知道,我在我的项目中使用了spring technology MVC,所以我不能使用这样的servlet ......无论它在到达任何java类之前应用服务器本身抛出错误,视图被吊死。我想你正在谈论我正在谈论的问题...... –
我该怎么知道这件事?你没有在你的问题的任何地方详细提到你如何解析上传的文件和你正在使用的框架。至少,验证不能由JS完成。由于安全限制,它根本无法访问文件元数据。 – BalusC
- 1. 客户端文件大小验证
- 2. 文件输入验证大小的客户端
- 3. MVC FileUpload文件大小客户端验证
- 4. 如何在客户端使用IE 7/8中的javascript验证文件大小?
- 5. 验证Perforce客户端文件副本
- 6. 客户端文件类型验证
- 7. 客户端验证
- 8. 客户端验证
- 9. 验证客户端
- 10. 验证客户端证书
- 11. 客户端JavaScript字段验证
- 12. 使用JavaScript Spring MVC客户端验证
- 13. 客户端丢失javascript验证
- 14. 通过javascript禁用客户端验证
- 15. ASP.NET客户端验证dataannotations - javascript minimumlength零
- 16. ASP.NET验证器的客户端JavaScript
- 17. JavaScript文件上传大小验证
- 18. JavaScript验证多个文件的大小
- 19. 如何从资源文件验证客户端的JavaScript消息?
- 20. 在客户端更改验证小组的按钮与JavaScript
- 21. 客户端表单验证?
- 22. 客户端身份验证
- 23. CloudTrax - 验证客户端
- 24. Telerik asp.net客户端验证
- 25. Silverlight客户端验证
- 26. angulars JS客户端验证
- 27. Reactjs客户端验证
- 28. 删除客户端验证
- 29. 在客户端验证
- 30. MVC客户端验证
您需要修复您的服务器。用户可以禁用JavaScript验证,否则会导致服务器崩溃。 – bdonlan