我有一个Grails 3休息应用程序,呼叫保存上传的文件。
def saveAll() {
request.fileNames.each { filename ->
if(!filename.empty){
File file = params[filename];
file.transferTo(grailsApplication.config.filesPath)
}
}
}
问题是代码工作正常,除非我使用Spring Security保护控件,然后params为空,我找不到其他选择
(我知道有了Spring安全性,有一个请求包装器,发现有几个有这个问题,但仍然没有找到明确的解决方案)
答案 0 :(得分:1)
解决方案是将@Transactional
实际添加到函数中。我不知道为什么会这样。但它以这种方式工作
答案 1 :(得分:0)
您是否尝试过使用request.getFiles()而不是request.getFileNames()。我有一个使用springSecurityRest插件的应用程序,并使用注释进行保护,部分工作代码与此类似。
if(request instanceof MultipartHttpServletRequest){
request.getFiles().each { MultipartFile file ->
// ... the code to transfer the file goes here
}
}
我已经进行了实验,并且在从RestfulController继承的控制器中,似乎请求的数据在绑定后会被刷新。这可能是您的参数似乎为空的原因。我不知道它是否适用于此,或者我的假设是否正确。