Начиная с Grails 1.2 (весна 3.0), вы можете получить доступ к нескольким файлам из входов с одинаковым именем (или использующих атрибут HTML5 multiple
) с помощью свойства multiFileMap
объекта request
контроллера (когдаrequest - это сообщение, состоящее из нескольких частей, объект request
будет экземпляром MultipartRequest ).Таким образом, вы можете получить доступ к списку MultipartFile объектов для определенного имени входа (например, documentFile
) следующим образом:
def save = {
List<MultipartFile> files = request.multiFileMap.documentFile
int count = files.findAll { !it.empty }.size
render "uploaded $count files"
}
Или получить доступ ко всем объектам MultipartFile из всех входов, например так:
def save = {
List<MultipartFile> files = request.multiFileMap.collect { it.value }.flatten()
int count = files.findAll { !it.empty }.size
render "uploaded $count files"
}
Редактировать 2013-02-08: Брайан Адамс спрашивает:
В приведенном выше случае я могу получить доступ ко всем объектам MultipartFile из всех входовна моей веб-странице.Но я хочу получить файлы с любого входа несколько.Пример: у меня есть имя ввода: «uploadFiles», и я хочу получить все файлы из этого тега ввода любой.Можете ли вы помочь мне?
Брайан, я думаю, что вы хотите, это первая версия выше.Если вход вашего файла называется «uploadFiles», то вы можете получить к нему доступ из мультифайловой карты, используя клавишу «uploadFiles»:
def save = {
List<MultipartFile> files = request.multiFileMap.uploadFiles
int count = files.findAll { !it.empty }.size
render "uploaded $count files"
}