使用springMVC实现图片上传

在添加学生的时候添加图片

addStu.jsp添加图片代码

学生编号
学生姓名
班级
图片

controller层

/**
MultipartFile 属性名称和jsp中传入的控件名称要相同,(在该项目中,jsp中,所以这里MMultipartFile 是imge),如果不相同可以使用@RequestParam(name="控件名称")MultipartFile 属性名称
*/ 
@RequestMapping("/addStuResult")
    public ModelAndView addStuResult(String snum, String sname, String id, String cname, MultipartFile imge,HttpSession session) throws IOException {
        ModelAndView modelAndView = new ModelAndView(new RedirectView("queryStu"));
        ClaInfo claInfo = iClaService.getEntityByName(cname);

        StuInfo stuInfo = new StuInfo();
        stuInfo.setId(id);
        stuInfo.setClaInfo(claInfo);
        stuInfo.setSnum(snum);
        stuInfo.setSname(sname);
        String fileName = stuInfo.getId() + ".jpg";
        String path = session.getServletContext().getRealPath("/") + "img/" + fileName;
   
        stuInfo.setImg(fileName);
        if (imge != null && imge.getSize() != 0) {
            File file = new File(path);
            imge.transferTo(file);
        }
        //添加学生
        stuService.addEntity(stuInfo);
        modelAndView.addObject("msg", "添加成功");
        return modelAndView;
    }

配置文件applicationContext.xml中配置

要在项目的out文件夹下面创建img文件夹,因为在controller层中

使用springMVC实现图片上传_第1张图片

使用springMVC实现图片上传_第2张图片

我在这个过程中遇到的问题有:

(1)form表单中enctype默认的值是application/x-www-form-urlencoded,不能用于文件上传,而multipart/form-data是将文件以二进制的形式上传,这样可以实现多种类型的文件上传。我忘记写enctype="multipart/form-data"了

(2)在网页中上传文件的时候文件名称被保存在数据库里面了,但是页面查看的时候显示不出来,在控制台上打印文件输出路径

String path = session.getServletContext().getRealPath("/") + "img/" + fileName;

但是到路径下查找并没有对应的文件,(郁闷)

然后在一位同学的建议下,我把项目里面创建的img文件夹删除了,再到项目的out文件夹下创建img(如上图所示),结果就可以在页面中显示了,,(糟心),out文件夹下存放的是项目编译后的文件,但是这和在哪里创建img文件夹有什么关系呢?我去搜索了下,并没有找到类似的答案,如果有人能解答下不胜感激。

你可能感兴趣的:(Java,web,框架)