nig*_*2k1 7 java grails groovy file-upload
我有这个GSP:
<g:uploadForm name="myForm" action='save'>
<input type='file' name='documentFile' value=''/>
<input type='file' name='documentFile' value=''/>
<input type='file' name='documentFile' value=''/>
<input type='file' name='documentFile' value=''/>
<input type='submit' value='Submit'/>
</g:uploadForm>
Run Code Online (Sandbox Code Playgroud)
但是当我尝试通过键入以下内容来查看控制器中的结果时:
render(params);
return true;
Run Code Online (Sandbox Code Playgroud)
我得到了这个结果:
"documentFile":org.springframework.web.multipart.commons.CommonsMultipartFile@14dcf95
Run Code Online (Sandbox Code Playgroud)
如何阅读正在上传的每个文件?我可以得到以下内容吗?
documentFile:[File,null,File,null] // (if the 2nd and the 4th are not being used)
Run Code Online (Sandbox Code Playgroud)
ps:我正在使用grails 1.2.2
首先,您需要为每个文件输入指定唯一的名称:
<g:uploadForm name="myForm" action="save">
<input type="file" name="documentFile1" value=""/>
<input type="file" name="documentFile2" value=""/>
...
</g:uploadForm>
Run Code Online (Sandbox Code Playgroud)
然后在您的控制器中,您可以使用:
// access each file by name
File file = request.getFile('documentFile1')
// or iterate through them
request.fileNames.each {
File file = request.getFile(it)
}
Run Code Online (Sandbox Code Playgroud)
我很确定你的name属性必须是唯一的.我在API中找不到任何可以让您获得使用相同输入上传的文件数组的内容name.
参考文献:
从grails 1.2(spring 3.0)开始,您可以使用控制器对象multiple的multiFileMap属性从具有相同名称(或使用HTML5 属性)的输入访问多个文件request(当请求是多部分表单帖子时,request对象将是MultipartRequest的实例).因此,您可以访问特定输入名称(即)的MultipartFile对象列表,documentFile如下所示:
def save = {
List<MultipartFile> files = request.multiFileMap.documentFile
int count = files.findAll { !it.empty }.size
render "uploaded $count files"
}
Run Code Online (Sandbox Code Playgroud)
或者从所有输入访问所有MultipartFile对象,如下所示:
def save = {
List<MultipartFile> files = request.multiFileMap.collect { it.value }.flatten()
int count = files.findAll { !it.empty }.size
render "uploaded $count files"
}
Run Code Online (Sandbox Code Playgroud)
编辑2013-02-08:Brian Adams问:
在上面的例子中,我可以从我的网页上的所有输入访问所有MultipartFile对象.但是我希望从任何输入中获取文件都是多个.例如:我输入的名称是:"uploadFiles",我希望从这个输入标签中获取所有文件.你能帮助我吗?
Brian,我想你想要的是上面的第一个版本.如果您的文件输入名为"uploadFiles",则可以使用"uploadFiles"键从multiFileMap访问它:
def save = {
List<MultipartFile> files = request.multiFileMap.uploadFiles
int count = files.findAll { !it.empty }.size
render "uploaded $count files"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4596 次 |
| 最近记录: |