上传文件有很多种方法,这里主要讲解的是spring mvc内提供的文件上传
前提使用:spring mvc
在这个之前我们需要把环境给配置好
1:springmvc的XML配置文件加上这一段就即可,
<!-- 配置文件上传 --> <!--200*1024*1024即200M resolveLazily属性启用是为了推迟文件解析,以便捕获文件大小异常 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="209715200" /> <property name="maxUploadSizePerFile" value="2097152"/> <property name="defaultEncoding" value="UTF-8" /> <property name="resolveLazily" value="true" /> </bean>
2:在JSP页面我们需要注意的一点是需要在form标签里面加上
enctype="multipart/form-data" 这一段
<form class="layui-form" action="" method="post" enctype="multipart/form-data">
…………
<input type="file" name="ufiles"/>
…………
<form>
3:在控制层接收文件,实现上传
//在控制层接受到文件,然后调用文件上传方法 //方法返回的是一个存入数据库的路径,也可以根据自己需求进行修改 @RequestMapping("/updateUser") public String updateUser(MultipartFile ufiles,HttpSession session){
//调用上传文件方法,返回一个保存到数据库的路径 String imgUrl= FileUploading.uploading(ufiles,session); return "redirect:/userPage/update.jsp"; }
4:文件上传方法
public class FileUploading { /** * 文件上传 * @param ufiles * @param session * @return 保存到数据库的路径 */ public static String uploading(MultipartFile ufiles, HttpSession session){ if(!ufiles.isEmpty()){ //获取放置图片的路径 String beanPath = session.getServletContext().getRealPath("/images"); //获取图片名字 String realName = ufiles.getOriginalFilename(); try { //开始上传 ufiles.transferTo(new File(beanPath+"/"+realName)); //保存路径到数据库 String imgUrl = session.getServletContext().getContextPath()+"/images/"+realName; return imgUrl; } catch (IOException e) { e.printStackTrace(); } } return null; } }
对于上传文件命名的处理每个人都有不同的方法,在这里不做讲解。