每當我選擇一個大小超過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