关于使用Springmvc的MultipartHttpServletRequest来获得表单上传文件的问题,万分感谢~
环境:tomcat7,ssh,eclipse具体情况:表单上的enctype已经设置为multipart/form-data,method="post",在applica...
环境:tomcat7, ssh, eclipse
具体情况:表单上的enctype已经设置为multipart/form-data, method="post", 在applicationContext.xml文件上已经加上<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
表单是既有type为file的input标签,也有type为text的input标签(我是想文件和数据一起提交);
其中代码:multipartRequest = (MultipartHttpServletRequest) baseRequest; 这个刚开始报类型转换错误,后来使用
CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(baseRequest
.getSession().getServletContext());
commonsMultipartResolver.setDefaultEncoding("utf-8");
multipartRequest = commonsMultipartResolver.resolveMultipart(baseRequest);
终于获得multipartRequest对象, 但是multipartRequest.getfile(...)和multipartRequest.getParameter(...)都是null,取不了任何东西,到底如何破啊?已困扰多时,万分感谢啦! 展开
具体情况:表单上的enctype已经设置为multipart/form-data, method="post", 在applicationContext.xml文件上已经加上<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
表单是既有type为file的input标签,也有type为text的input标签(我是想文件和数据一起提交);
其中代码:multipartRequest = (MultipartHttpServletRequest) baseRequest; 这个刚开始报类型转换错误,后来使用
CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(baseRequest
.getSession().getServletContext());
commonsMultipartResolver.setDefaultEncoding("utf-8");
multipartRequest = commonsMultipartResolver.resolveMultipart(baseRequest);
终于获得multipartRequest对象, 但是multipartRequest.getfile(...)和multipartRequest.getParameter(...)都是null,取不了任何东西,到底如何破啊?已困扰多时,万分感谢啦! 展开
4个回答
展开全部
try {
//下面这句必须加,不然报错
MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
//获取一起跟文件传过来的其他参数值
String id = multipartRequest.getParameter("id");
//获取上传上来的文件
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
for (Map.Entry<String, MultipartFile> entry : fileMap.entrySet()){
MultipartFile file = entry.getValue();
String fileName = file.getOriginalFilename();
System.out.println(fileName);
String path = "C:\\Users\\Administrator\\Desktop" + File.separator + fileName;
file.transferTo(new File(path));
}
} catch (Exception e) {
e.printStackTrace();
}
//下面这句必须加,不然报错
MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
//获取一起跟文件传过来的其他参数值
String id = multipartRequest.getParameter("id");
//获取上传上来的文件
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
for (Map.Entry<String, MultipartFile> entry : fileMap.entrySet()){
MultipartFile file = entry.getValue();
String fileName = file.getOriginalFilename();
System.out.println(fileName);
String path = "C:\\Users\\Administrator\\Desktop" + File.separator + fileName;
file.transferTo(new File(path));
}
} catch (Exception e) {
e.printStackTrace();
}
展开全部
直接在Controller用@RequestParam MultipartFile[] 变量名 接收文件不就行了么,input的name与Controller中的参数名一样
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
request.getFileMap(),然后遍历获取文件,参数用request.getParameterNames,然后循环遍历
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那这个type为file的input的标签有name属性吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询