SSM+form表单文件上传
这里介绍SSM如何配置上传文件
配置springmvc.xml:
<!--配置上传下载--> <bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver" />
以及在WEB-INF下面的web.xml配置文件的相关设置
<servlet>节点里面
-1表示默认
<!--配置上传文件大小--> <multipart-config> <max-file-size>-1</max-file-size> <max-request-size>-1</max-request-size> <file-size-threshold>0</file-size-threshold> </multipart-config>
然后来个添加图片的示例
Controller
//图片上传 @RequestMapping(value = "/addPicture", method = RequestMethod.POST) public String addPicture(MultipartFile img, Model model, HttpServletRequest request) { ArrayList<String> strings = new ArrayList<>(); //得到上传文件实际路径 String realPath = request.getServletContext().getRealPath(File.separator + "imges"); if (img.isEmpty()) { strings.add("请选择文件!"); } //得到文件的类型 String fileType = img.getContentType(); //第一种方式Arrays.asList("image/jpeg","image/png") if (!fileType.contains("image/")) { strings.add("只允许上传图片!"); } //只允许上传的图片小于5MB if (img.getSize() > 1024 * 1024 * 1024 * 5) { strings.add("只允许上传5M的图片!"); } if (!strings.isEmpty()) { model.addAttribute("errs", strings); return "empAdd"; } try { String[] formatName = getFormatName(img.getOriginalFilename()); img.transferTo(new File(realPath + File.separator + formatName[0] + formatName[1] + formatName[2]));
//想要得到图片的相对路径/方法体返回的数组拼接在一起即可保存到数据库。 } catch (IOException e) { e.printStackTrace(); } return "empAdd"; } public String[] getFormatName(String fileName) { //设置日期格式yyyy-MM-dd SimpleDateFormat df = new SimpleDateFormat("_yyyyMMddHHmmss"); // new Date()为获取当前系统时间 String now = df.format(new Date()); //获得文件名去掉后缀 String prefix = fileName.substring(0, fileName.lastIndexOf(".")); //得到文件后缀带. String postfix = fileName.substring(fileName.lastIndexOf(".")); return new String[]{prefix, now, postfix}; }
jsp方面
需要注意的是,一定要写 enctype="multipart/form-data",否则springmvc就会解析失败。这个的作用就是将form表单的数据以二进制的方式传输。
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<div style="margin:auto"> <form:form action="/addPicture" method="post" enctype="multipart/form-data"> <input type="file" name="img" /> <input type="submit"/> </form:form> </div>
错误信息显示:
<c:forEach items="${errs}" var="e">
<div>${e}</div>
</c:forEach>
jQuery+ajax方式
<input type="file" id="fff"/> <input type="button" id="gg" value="提交测试"/>
//ajax上传文件 $("#gg").on("click", function () { var data = new FormData(); data.append("aaa", "第一个数据"); data.append("file", document.querySelector("#fff").files[0]); $.ajax({ url:"/getFile", method:"post", contentType:false, data:data, processData:false }); });
后台代码
@RequestMapping(value = "/getFile" ,method = RequestMethod.POST) public String gg(MultipartFile file, String aaa){ System.out.println(file.getOriginalFilename()+"___"+aaa); return "{\"msg\":\"succeed\"}"; }
具体后台实现同上。。。
不忘初心