Странная временная ошибка при загрузке нескольких файлов
На данном этапе я использую Grails версии 2.3.3 на локальном ПК, а не в Интернете.
Я создаю многофайловый процесс загрузки, и у меня есть то, что можно описать только как "временное" поведение с этим.
Под переходным процессом я имею в виду, что какое-то время он работал корректно, многократно загружая файлы успешно, а затем начинает последовательно терпеть неудачу, не меняя какой-либо код.
Ошибка:
Ошибка 500: Внутренняя ошибка сервера URI /VidPlay/fileUpload/saveMK Класс groovy.lang.MissingMethodException Сообщение Нет подписи метода: org.apache.catalina.core.ApplicationHttpRequest.getFileNames() применимо для типов аргументов: () значения: [] Возможные решения: getHeaderNames(), getMimeTypes()
Вот обзор кода - во-первых, HTML-код для формы загрузки:
<g:uploadForm action="multiFileSave" name="mikeK">
<fieldset class="buttons">
<span class="pageHeader"><g:message code="Upload a New Picture" /></span>
<g:submitButton name="Save" onclick="fileUpload.selectButton()" class="buttons" value="${message(code: 'default.button.save.label', default: 'Save')}" />
</fieldset>
<tr class="prop">
<td valign="top" class="name">
<label class="uploadFile" for="payload">File:</label>
</td>
<td valign="top">
<input type="file" id="file" name="file[]" multiple/>
</td>
</tr>
</g:uploadForm>
Вот действие контроллера, которое обрабатывает загрузку или передачу:
request.getFileNames().each{
log.debug( "getFileNames getFile: ")
//for( file in request.getFiles(it))
request.getFiles(it).each
{ file ->
// loop through all files selected
log.debug( "multiFileSave - name: $file.name Originalfilename: $file.originalFilename contentType: $file.contentType")
try{
file.transferTo( new File( userDir, file.getOriginalFilename()))
upFiles = upFiles + " " + file.originalFilename
def pictId = PicturesShr.findByName(file.originalFilename)
if(pictId) multiFileLst= multiFileLst + "|" + pictId.id
}
catch (Exception eWrite)
{
log.debug ("File Transfer error files: file.originalFilename Error: ${eWrite.toString()}")
flash.message = flash.message + "File Transfer error files: file.originalFilename Error: ${eWrite.toString()}"
failFiles = failFiles + " " + file.originalFilename
}
} // getFiles loop
} // getFileNames loop
Поскольку я делаю все это на локальном ПК с использованием Win 7.0, я вижу, что это очень искусственная среда с локальной машиной, действующей как клиент и сервер одновременно. Это заставляет меня думать, что моя проблема связана с ограничением ресурсов компьютера или операционной системы.
В качестве альтернативы, возможно, есть более чистый способ получения информации о файле из формы загрузки в действие?
Обратите внимание - это странное поведение происходило в двух отдельных приложениях - я сначала ввел эту систему загрузки файлов в приложение для разработки, и она некоторое время работала правильно, а затем начал последовательно терпеть неудачу с той же ошибкой, приведенной выше.
Буду рад любым предложениям - заранее спасибо.
-Майк