spring - Grails上传文件异常,由springsecurity引起

标签 spring grails spring-security

我使用 grails 1.3.7 并且有一个奇怪的错误。 这是我上传文件的代码:

def editAvatar = {
            def uploadedAvatar = request.getFile("uploadedAvatar");
    if(!uploadedAvatar?.isEmpty()) {
        clientService.saveUploadedAvatar(uploadedAvatar, basePath);
        render 'avaterUdated';
    } else {
        render(contentType:"text/json", encoding:"UTF-8") {
            [valid:false, error: "some error"]
        }
    }

在开发环境中一切正常,但在生产模式下我有异常(exception):

org.codehaus.groovy.runtime.typehandling.GroovyCastException: 
 Cannot cast object 'org.springframework.security.web.firewall.RequestWrapper@1ce4ded'with class 'org.springframework.security.web.firewall.RequestWrapper' to class 'org.springframework.web.multipart.MultipartHttpServletRequest'
at ru.pscb.web.grb.ui.UserProfileController$_closure6.doCall(UserProfileController.groovy:80)

我也尝试过这段代码:

MultipartHttpServletRequest mpr = (MultipartHttpServletRequest)request;
    def uploadedAvatar = request.getFile("uploadedAvatar");

但这也不起作用。

我使用 sprigsecurity-core1.2 和 grails 1.3.7/我无法升级它。

感谢您的回复

最佳答案

谢谢你 - 四年后,你救了我。在您的代码中,问题似乎是您将请求转换为 MultipartHttpServletRequest 但随后您没有将 uploadAvatar 设置为请求的此转换版本 (mpr)。尝试将最后一行代码更改为:

def uploadedAvatar = mpr.getFile("uploadedAvatar");

感谢您的帮助!

关于spring - Grails上传文件异常,由springsecurity引起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14871978/

相关文章:

java - Spring中基于 token 的身份验证

java - 无法将类型 'org.springframework.batch.item.xml.StaxEventItemWriter' 的值转换为所需类型 'org.springframework.batch.item.ItemReader'

java - 使用 cas 实现 Spring Switch 用户过滤器

selenium - Grails cucumber 和 Geb - 在 firefox 和 cucumber 方法中运行测试

java - 为什么 default-target-url 和 AJAX 调用总是得到 "GET: 403 Forbidden "?

Spring Security 3.2 CSRF 对多部分请求的支持

java - Spring Hibernate 与 @Transaction 结果 LazyInitializationException

Spring Framework 4.1 忽略 ContentNegotiation 中的自定义 Object Mapper

postgresql - 将postgreSQL integer []数据类型映射到Grails

grails - 如何在 Grails 中实现批处理