0

我在现阶段不在互联网上的本地 PC 上运行 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 的本地 PC 上执行所有这些操作时,我可以看到这是一个非常人为的环境,本地计算机同时充当客户端和服务器。这让我认为我的问题是某种机器或操作系统资源限制问题。

或者,也许有一种更简洁的方法可以从上传表单中获取文件信息到操作中?

注意 - 这种奇怪的行为发生在两个单独的应用程序中 - 我首先将此文件上传系统引入开发应用程序,它可以正常工作一段时间,然后开始持续失败,并出现上面引用的相同错误。

欢迎任何建议 - 提前致谢。

-麦克风

4

0 回答 0