Странная временная ошибка при загрузке нескольких файлов

На данном этапе я использую 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, я вижу, что это очень искусственная среда, в которой локальная машина действует как клиент и сервер одновременно. Это заставляет меня думать, что моя проблема связана с проблемой ограничения ресурсов компьютера или ОС.

В качестве альтернативы, возможно, есть более чистый способ получить информацию о файле из формы загрузки в действие?

Обратите внимание: это странное поведение произошло в двух отдельных приложениях. Сначала я внедрил эту систему загрузки файлов в приложение для разработки, и какое-то время она работала правильно, а затем начала постоянно давать сбои с той же ошибкой, указанной выше.

Буду рад любым предложениям - заранее спасибо.

-Майк


person mikek    schedule 17.12.2014    source источник
comment
Просто догадка: вы используете какой-то плагин безопасности, и поведение меняется в зависимости от того, вошли вы в систему или нет?   -  person Gregor Petrin    schedule 17.12.2014
comment
Иметь логин, но не с помощью плагина - убедился, что я вошел в систему, но все равно не работает. В других сообщениях предлагается явно определить запрос как MultipartRequest, см.: [stackoverflow.com/questions/14259264/ Или как MultipartHttpServletRequest см.: [stackoverflow.com/questions/ 27393506/ . Ни один из них не может быть решен - не уверен, что мне нужно импортировать? Но 2-й пост предполагает, что кастинг не нужен, см. комментарий Берта Беквита - не уверен, какое разрешение для этого поста?   -  person mikek    schedule 17.12.2014