基于springmvc实现文件上传
1.导入jar包
2.修改配置类
在springmvc.xml添加bean
<!-- 配置文件上传处理器 --><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><!-- 设置在内存中允许的最大文件大小,超过此大小的文件将被写入磁盘 --><property name="maxInMemorySize" value="500000"></property><!-- 设置默认的文件编码,以支持多语言文件名和文件内容 --><property name="defaultEncoding" value="UTF-8"></property></bean>
3.设置路径
在Tomcat安装目录中的webapps中新建文件夹upload,用于存放本地文件
4.修改Tomcat
打开IDEA
5.修改controller
这里以新增为例
/*** 处理条目插入请求* 该方法用于将用户提交的条目和相关文件插入到系统中*/@RequestMapping("/EntryInsertServlet")public String doInsert(Model model,Entry entry,@RequestParam(value = "myFile", required = false) MultipartFile[] multipartFiles) {String picpath = "";// 遍历上传的文件for (MultipartFile multipartFile : multipartFiles) {String fileName = multipartFile.getOriginalFilename();// 检查文件名是否为空if (fileName != null && !fileName.equals("")) {try {// 获取并设置上传文件的保存路径String path = System.getProperty("user.dir").replace("bin", "webapps") + "/upload/";// 为上传的文件生成唯一的文件名,防止重名fileName = System.currentTimeMillis() + "_" + multipartFile.getOriginalFilename();File file = new File(path, fileName);// 将文件保存到服务器multipartFile.transferTo(file);// 记录文件名,用于后续操作picpath += fileName + ",";} catch (IOException e) {e.printStackTrace();}}}// 设置条目的图片路径entry.setPicpath(picpath);// 调用业务逻辑插入条目int insert = entryServlet.insert(entry);// 根据插入结果添加消息到模型,以便在页面上显示model.addAttribute("msg", insert > 0 ? "增加成功" : "增加失败");// 重定向到条目列表页面return "redirect:EntryListServlet";}
JSP页面的代码示例
显示:通过c:forTokens 将值按照 ','分割,名称为pic,在img的src添加/upload/然后拼接${pic}
插入:请求改成post,entype改成“multipart/form-data”
<form action="EntryInsertServlet" method="post"enctype="multipart/form-data"><table border="1px" align="center"><tr><td>图片上传</td><td><input type="file" name="myFile"></td></tr><tr><td>图片上传</td><td><input type="file" name="myFile"></td></tr><tr><td>图片上传</td><td><input type="file" name="myFile"></td></tr><tr><td colspan="2" style="text-align: center"><input type="submit" value="提交"><input type="button" value="返回" onclick="fh()"></td></tr></table>
<form/>