我正在尝试使用请求或 HttpServletRequest 功能复制多个文件。
我已经能够在 Controller 操作中循环遍历所有选定的文件,其中我访问了每个文件的 MultipartFile 对象 - 以下是操作代码:
request.getFileNames().each{
request.getFiles(it).each
{ file ->
// loop through all files selected
println "name: $file.name Originalfilename: $file.originalFilename contentType: $file.contentType"
file.transferTo( new File( userDir, file))
} // eo for loop
} // eo requect.getFiles().each....
我在transferTo行收到一个groovy运行时错误 - 错误消息是:
Could not find matching constructor for: java.io.File(java.io.File, org.springframework.web.multipart.commons.CommonsMultipartFile)
如果我注释掉 transferTo 行、打印输出行,则循环会生成有关每个选定文件的正确 MultipartFile 信息。
查看此处选择的两个文件的输出:
name: file[] Originalfilename: for-sale.gif contentType: image/gif
name: file[] Originalfilename: front.gif contentType: image/gif
如何调用transferTo 来进行复制?
-迈克
最佳答案
如果您查看 CommonsMultiPartFile 的文档您会发现问题出在构建文件的方式上。
file.transferTo( new File( userDir, file))
应该是:
file.transferTo( new File(userDir, file.getOriginalFilename()))
您需要访问文件的originalFilename
属性。
关于java - grail 中的多个文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26159515/