2008-12-12 2 views
3

Я новичок в grails.Я делаю веб-приложение, которое загружает изображение с клиентской стороны и хранит его на сервере.Загрузка изображения в grails

Мой Gsp код:

<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. Он должен принимать только файлы изображений.

Может ли кто-нибудь помочь?

спасибо.

ответ

7

Я не знаю, следующий ответ правильный путь, чтобы найти расширение file.i я тоже новичок this.But этот ответ работает

Используйте file.getOriginalFilename() method.It возвращается строка типа «test.jpg». Затем вы разбиваете имя файла с помощью метода tokenize на «.». Затем вы берете последний элемент строки из расщепленного списка. Это расширение файла. Теперь вы можете выполнить оставшийся процесс.

3

Получение расширения файла из файла.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 в других системах, но application/vnd.ms-excel на Windows.

Смежные вопросы