前言:项目中有这样的需求,多个功能公用一个页面,如添加“添加景区”,“添加派出所”,“添加医院”,“添加学校”等都公用一个页面,公用一个form表单,在添加信息时它们都公用一个方法。
问题:问题在于“添加景区”功能中有一个上传图片文件的功能而其余的功能则没有上传文件的需要。之前我们是在方法中声明:@RequestParam("imageFile") MultipartFile imageFile,现在如果还在这样做的话当没有文件上传时就会有异常了。找到了问题就想办法解决问题。
解决办法:思想是我们先判断一下,是否有文件上传,如果没有文件上传就用以前的表单,如果有文件上传就采用如下做法:
public String save(EnterpriseBusiness enterpriseBusiness, HttpServletRequest request) {
//@RequestParam("imageFile") MultipartFile imageFile,
// 创建一个通用的多部分解析器.
CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
// 设置编码
commonsMultipartResolver.setDefaultEncoding("utf-8");
// 判断是否有文件上传
if (commonsMultipartResolver.isMultipart(request)) {//有文件上传
//将request变成多部分request
MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)request;
//获取multiRequest 中所有的文件名
Iterator<String> iter=multiRequest.getFileNames();
while (iter.hasNext()) {
MultipartFile imageFile = multiRequest.getFile(iter.next().toString());//(String) iter.next()
到此为止就相当于回到了:
@RequestParam("imageFile") MultipartFile imageFile,
紧接着你就可以做文件上传的相关操作了。对于以上的代码,备注的很清楚。如有不明白欢迎留言,或者加我的QQ:416404891
晚安!