java spring mvc 上傳
阿新 • • 發佈:2019-01-26
Spring mvc 實現上傳功能
spring mvc Controller 中的程式碼
@RequestMapping("/userAddGo") public ModelAndView userAddGo(HttpServletRequest request, @ModelAttribute("user") User user) throws IllegalStateException, IOException { ModelAndView mav = new ModelAndView("redirect:/user/userList"); userService.insertUser(user); System.out.println("檔案上傳。。"); // 建立一個通用的多部分解析器. CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver( request.getSession().getServletContext()); // 設定編碼 multipartResolver.setDefaultEncoding("utf-8"); // 判斷 request 是否有檔案上傳,即多部分請求... if (multipartResolver.isMultipart(request)) { MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request; Iterator<String> iter = multiRequest.getFileNames(); while (iter.hasNext()) { MultipartFile file = multiRequest.getFile(iter.next()); // 判斷檔案是否為空 if (file.isEmpty()) { continue; } String path = request.getSession().getServletContext() .getRealPath("/"); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); sdf.format(new Date()); // 獲取檔案的名字 String originalFilename = file.getOriginalFilename(); String filepath = request.getSession().getServletContext() .getRealPath("/") + "upload/" + file.getOriginalFilename(); this.createParentDirectory(filepath); File uploadFile = new File(filepath); file.transferTo(uploadFile); } } return mav; }
private void createParentDirectory(String path) {
Assert.notNull(path);
File file = new File(path);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
file.getParentFile().setWritable(true, false);
file.getParentFile().setExecutable(true, false);
}
}
JSP中的程式碼
<tr> <td> <input type="file" id="file" name="file">上傳</ipput> </td> </tr> <tr> <td> <input type="button" onclick="submit();" value="確認"/> </td> </tr> </table> </form> <script type="text/javascript"> function submit(){ $('#ff').submit(); } </script>
form 標籤裡面必須有
enctype="multipart/form-data"
<form action="${pageContext.request.contextPath}/user/userAddGo" id="ff" enctype="multipart/form-data" method="post">
spring mvc 中配置引數
<!-- 配置檔案上傳,如果沒有使用檔案上傳可以不用配置,當然如果不配,那麼配置檔案中也不必引入上傳元件包 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 預設編碼 --> <property name="defaultEncoding" value="utf-8" /> <!-- 檔案大小最大值 --> <property name="maxUploadSize" value="10485760000" /> <!-- 記憶體中的最大值 --> <property name="maxInMemorySize" value="40960" /> </bean>