2008-12-12 167 views
3

我是grails.me新手,我正在做web應用程序,它從客戶端上傳圖像並將其存儲在服務器中。grails圖片上傳

我的普惠制代碼:

<g:uploadForm action="saveImage"> 
<input type="file" name="image"> 
<input type="submit" value="Submit"> 
</g:uploadForm> 

在控制器我saveImage操作是:

def saveImage={ 
def file = request.getFile('image') 
     if (file && !file.empty) { 
      file.transferTo(new java.io.File("image.jpg")) 
      flash.message = 'Image uploaded' 
      redirect(action: 'uploadImage') 
     } 
} 

在此代碼,如果我上傳一些其他文件,如文本文件,它拋出Exception.For,我想檢查文件擴展名,我想要使用If循環,確保上傳的文件是圖像文件或不是。但我不知道如何在grails中找到文件擴展名。

是否有任何其他方式上傳圖片在grails application.It只能接受圖像文件。

任何人都可以提供幫助嗎?

謝謝。

回答

7

我不知道下面的答案是找到file.I的擴展名的正確方法我也是新this.But這個答案正在

使用file.getOriginalFilename() method.It回報像「test.jpg」這樣的字符串,然後用「。」使用tokenize方法分割文件名,然後從分割的列表中取出最後一個字符串元素,即文件的擴展名。現在可以完成剩下的過程。

3

從file.getOriginalFilename()獲取文件擴展名工作良好。我認爲這是更好的方法。

2
if(params?.photo?.getContentType()=='image/jpeg' || 
    params?.photo?.getContentType()=='image/gif' || 
    params?.photo?.getContentType()=='image/png' || 
    params?.photo?.getContentType()=='image/bmp' 
) 

我想你可以試試這個

0

好了,這實在是太晚了。但我找到了最好的解決方案(如擴展真的不說說內容)是使用file.getContentType() ...

例如,對於JPEG圖像,返回值將是一個字符串image/jpeg,你可以輕鬆地測試。其他文件格式相同(PNG,GIF,...)。

希望這會有所幫助。

+0

只注意到@Sree有同樣的建議...是那麼難讀,我沒有看到它在第一。 – fluxon 2012-03-01 10:29:44

1

file.getContentType()存在一個小問題。 Windows和其他系統處理它的方式不同。

例如,一個.csv文件將在其他系統中爲text/plain,但在Windows上爲application/vnd.ms-excel