這里介紹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\"}"; }
具體后台實現同上。。。