gpt4 book ai didi

spring - Grails 文件上传问题

转载 作者:行者123 更新时间:2023-12-02 17:02:34 25 4
gpt4 key购买 nike

我正在尝试模拟 grails 网站的文件上传代码,但遇到了一些问题。我使用与发现的相同的代码 here 。这是我的代码:

    <g:form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="myFile" />
<input type="submit" value="Upload" />
</g:form>

def upload = {
def f = request.getFile('myFile')
if(!f.empty) {
flash.message = 'success'
}
else {
flash.message = 'file cannot be empty'
}
}

我在运行时收到以下错误:

Message: No signature of method: org.mortbay.jetty.Request.getFile() is applicable for argument types: (java.lang.String) values: {"myFile"}
Caused by: groovy.lang.MissingMethodException: No signature of method: org.mortbay.jetty.Request.getFile() is applicable for argument types: (java.lang.String) values: {"myFile"}

这似乎与某些 Spring 配置有关。 Spring 似乎没有注入(inject) MultipartHttpServletRequest,因此我的请求没有适当的方法。我刚刚使用grails create-app 创建了这个应用程序。我没有修改resources.groovy 文件。我正在使用 grails 1.0.3。

非常感谢任何帮助。 grails 网站使这一切看起来如此简单。

最佳答案

问题解决了!

我使用的示例代码将文件上传到 Grails 的方式可能与原作者的意图不同。问题是,当调用 Controller 的 upload 方法时,有时是为了上传页面的原始渲染。该方法中的请求不是 MultipartHttpServletRequest 类型。当我对要上传的文件进行 POST 时,Spring 做了正确的事情并将我的请求更改为 MultipartHttpServletRequest。因此,在使用我的请求(例如 MultipartHttpServletRequest)之前,我需要在我的 update Controller 方法中进行简单的检查。

if(request instanceof MultipartHttpServletRequest)
{
MultipartHttpServletRequest mpr = (MultipartHttpServletRequest)request;
CommonsMultipartFile f = (CommonsMultipartFile) mpr.getFile("myFile");
if(!f.empty)
flash.message = 'success'
else
flash.message = 'file cannot be empty'
}
else
flash.message = 'request is not of type MultipartHttpServletRequest'

关于spring - Grails 文件上传问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/206224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com