2011-02-16 68 views
9

我是Grails初學者,請耐心等待我。目前,我在操作文件上傳方面遇到困難。據我所知,使用request.getFile()我可以很容易地得到字節流。但在此之前我這樣做,我要檢查以下內容:正在上傳Grails文件上傳 - 如何識別文件和/或內容類型?

  • 文件的文件名
  • 的文件的文件大小上載
  • 文件的
  • 內容/文件類型被上傳

這怎麼辦?文件上傳到服務器之前甚至有可能嗎?我想阻止上傳大文件。

+1

你想做到這一點的前端還是後端? – 2011-02-16 16:59:14

回答

19

所有信息都包含在可以將您的請求參數轉換爲的CommonsMultipartFile對象中。

您可以使用它一樣,(在你的控制器)

def uploaded = { 
    def CommonsMultipartFile uploadedFile = params.fileInputName 
    def contentType = uploadedFile.contentType 
    def fileName = uploadedFile.originalFilename 
    def size = uploadedFile.size 
} 

至於阻擋大文件上傳,這可以通過添加以下到您的形式完成:

<INPUT name="fileInputName" type="file" maxlength="100000"> 

但並非所有的瀏覽器都會支持它。另一個限制是您的容器上傳限制(請參閱Tomcat配置或您正在使用的任何容器)。

除此之外,你必須檢查大小,並在控制器中拒絕它。

+0

提供的所有內容都是使用簡單的HTML表單提交。 – mfloryan 2011-02-16 17:18:07

0

或者您可以直接上傳文件屬性而不使用CommonsMultipartFile。

高清ufile = request.getFile( 「fileInputName」)
的println(ufile.contentType)
的println(ufile.originalFilename)
的println(ufile.size)