SpringMVC上传文件
1、配置虚拟目录
方法一、在eclipse中设置:双击tomcat,在Web Modules中点击“Add External Web Module”,在窗口中添加相应虚拟目录地址。具体如下图所示
方法二、在tomcat配置文件中设置:tomcat安装目录下conf/server.xml中添加:
<Context docBase=" E:\dev\eclipse\upload\images"path="/pic" reloadable="false"/>
2、配置解析器
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!--设置上传文件的最大尺寸为5MB --> <propertyname="maxUploadSize"> <value>5242880000000</value> </property> </bean>
|
3、导入jar包
CommonsMultipartResolver解析器依赖commons-fileupload和commons-io,加入如下jar包即可:
4、文件上传代码
4.1 Controller代码
@RequestMapping("uploadCourse") public ModelAndView uploadCourse( MultipartFile course_pic,//接收图片,这个名字要和页面上的文件名要求一致)throws Exception { //原始图片名称 String originalFilename =course_pic.getOriginalFilename(); //上传图片 if (course_pic!=null &&originalFilename != null &&originalFilename.length() > 0) {
// 存储图片的物理路径 String pic_path = "E:\\dev\\eclipse\\upload\\images\\";
// 新的图片名称 String newFileName = UUID.randomUUID() +originalFilename.substring(originalFilename.lastIndexOf(".")); // 新图片 File newFile = new File(pic_path +newFileName);
// 将内存中的数据写入磁盘 course_pic.transferTo(newFile);
// 将新图片名称写到中 course.setCoursepic(newFileName);
} ...... ModelAndView mv = new ModelAndView(); mv.setViewName("admin/courseAdd"); returnmv; } |
4.2 Jsp页面代码
表单属性中添加enctype="multipart/form-data",需要注意的是input输入框中name属性的值要与controller中定义的形参名称一致。
<form method="post"action="${pageContext.request.contextPath }/uploadCourse"enctype="multipart/form-data"> <tr> <tdclass="lable">课程图片</td> <td><inputtype="file" name="course_pic"id="image"/></td> </tr> ...... <inputtype="submit"value="确认添加"class="button"/> <inputtype="reset" value="重置"class="button"id="reset"/> </form> |