Controller:
@RequestMapping(value = "/add",method = RequestMethod.POST) public String add(Material material, HttpServletRequest request) { this.copyFileAndSaveFile(request, material); this.materialService.save(material); return "redirect:/material"; } private void copyFileAndSaveFile(HttpServletRequest request, com.boventech.jd100.entity.Material material) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; for (Map.Entry<String, MultipartFile> entity : multipartRequest.getFileMap().entrySet()) { MultipartFile mf = entity.getValue(); String uuid = UUID.randomUUID().toString(); String ext = null; try { if (null == mf || mf.isEmpty() || null == mf.getInputStream() || mf.getSize() > 40000000) { return; } ext = Files.getFileExtension(mf.getOriginalFilename()); File f = new File(APPPropertiesReader.getProperty(FILEPATH) + uuid + "." + ext); Files.createParentDirs(f); FileCopyUtils.copy(mf.getBytes(), f); material.setFilePath(APPPropertiesReader.getProperty(FILEPATH) + uuid + "." + ext); material.setFileName(mf.getOriginalFilename()); } catch (IOException e) { e.printStackTrace(); } } }
serviceImpl:
@Override public void save(Material material) { this.materialDao.save(material); }
jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE HTML> <html> <head> <script type="text/javascript" src="<c:url value='/resources/js/jquery.placeholder.js'/>"></script> <script type="text/javascript" src="<c:url value='/resources/js/input.placeholder.js'/>"></script> <script type="text/javascript" src="<c:url value='/resources/js/material/add.js'/>"></script> <title>首页编辑</title> </head> <body> <form action = "<c:url value = "/admin/add"></c:url>" method = "post" id="add_form" enctype="multipart/form-data"> <table class="tab01"> <tr> <td class="name">标题:</td> <td><input type="text" class="text_input" name="title" placeholder="标题"/></td> <td><label for="title" class="error" generated="true" style="color:red;font-size:12px;"></label></td> </tr> <tr> <td class="name">备注:</td> <td><input type="text" class="text_input" name="remark" placeholder="备注"/></td> <td><label for="remark" class="error" generated="true" style="color:red;font-size:12px;"></label></td> </tr> <tr> <td class="name">上传文件:</td> <td><input type="file" class="text_input" name="file" accept= "video/*" placeholder="上传文件"/><span class='error' generated='true' style='color: red; font-size: 12px;'>*文件大小为30M以下</span> </td> <td><label for="file" class="error" generated="true" style="color:red;font-size:12px;"></label></td> </tr> <tr> <td> </td> <td colspan="2"> <input type="submit" class="button" id="submitButton" value="提交" name="reset" /> <input type="reset" class="button" value="重置" name="reset" /> </td> </tr> </table> </form> </body> </html>
Meterial.java
@Entity @Table(name="material") public class Material implements Serializable{ private static final long serialVersionUID = -8583022687535428265L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String title; private String remark; private String fileName; private String filePath; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public String getFilePath() { return filePath; } public void setFilePath(String filePath) { this.filePath = filePath; } public Long getId() { return id; } }
app.properties
#filePath = C\:\\MyJob\\edoc\\ materialFilePath =/Users/sunhu/jd100/material/
特别注意的是js必须要加载进去!!!
上面的js文件和APPPropertiesReader.java在资源中
以上是上传视频的,如果无限制则删除 accept= "video/*"