2012-03-15 65 views
1

我正在GWT中實現一個簡單的圖像上傳小部件。成功上傳之前,有一些需要執行,像一些基本驗證:Java文件上傳驗證最佳實踐

  1. 尺寸
  2. 文件類型

什麼是做到這一點的驗證的最佳地點?
據我所知,大小和類型驗證只能在服務器端完成。
即服務器小程序(MyUploadServlet擴展HttpServlet)實際上傳文件。
那是唯一的地方嗎?做這種驗證的最佳做法是什麼?

而且,如果我能得到驗證碼(圖像文件類型和大小),那將是巨大的:)

回答

1

驗證可以在服務器端做得更好。 基本上我會建議你2步大小驗證:

1)驗證內容長度的HTTP頭。 request.getContentLength()

2)如果頭文件不可用,則在讀取輸入流時進行實際大小驗證。所以如果你達到極限,你可以拋出異常。

在gwt客戶端,您可以驗證該異常並顯示相應的錯誤。

確定文件類型可能不那麼直截了當。在文件實際上傳到服務器上後,您可以只檢查文件擴展名或使用文件類型特定的驗證。

+0

謝謝阿列克謝。我最感興趣的是最佳實踐(就代碼組織而言),我們應該遵循這樣的驗證,就像應該有一個不同的驗證器類一樣?或者它可以在同一個servlet中?從哪裏應該驗證值來自 - 彈簧文件或其他地方?希望我能夠解釋這個時間:) – user1270392 2012-03-16 21:25:38

+0

如果你使用spring,你可以使用spring mvc進行上傳處理。在Spring配置中,您應該定義一個MultipartResolver: <! - 其中一個可用屬性;最大文件大小以字節爲單位 - > '所以spring框架將負責驗證。 – 2012-03-19 07:41:54

+0

這是一個很好的文章http://www.mkyong.com/spring-mvc/spring-mvc-file-upload-example/ – 2012-03-19 07:50:08

0

HTML 5對File API有不同的支持,這意味着某些瀏覽器將能夠爲您提供在與服務器通話前上傳文件的大小。如果您可以假設您正在使用的瀏覽器的某些內容,則可能需要按照html 5 file api size的順序搜索某些內容,然後查看是否可以在您的案例中使用它。