springmvc文件上传

来源:互联网 发布:阿里云备案转入 编辑:程序博客网 时间:2024/05/17 05:13

第一步:

springmvc配置文件


<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">    <!-- one of the properties available; the maximum file size in bytes -->    <!--1024*200即2000k -->    <property name="maxUploadSize" value="2048000" />    <property name="defaultEncoding" value="UTF-8" />    <!--resolveLazily属性启用是为了推迟文件解析,以便在UploadAction 中捕获文件大小异常 -->    <property name="resolveLazily" value="true" />   </bean>   

 第二步:

 @RequestMapping(value = "/add", method = RequestMethod.POST)public String addUserSubmit(String userName,String passWord, MultipartFile  headerfile,HttpServletRequest request) throws IllegalStateException, IOException {//构造保存文件路径String path = request.getServletContext().getRealPath("/") + "upload/";String fname = getFileName(headerfile.getOriginalFilename());File saveFile = createFile(new File(path,fname ));//保存文件到指定路径headerfile.transferTo(saveFile);//保存数据库User user = new User(userName,passWord,"upload/"+fname);userServer.addUser(user);return "forward:/user/list";}



/** * 判断是否文件路径,如果是路径进行切割获取文件名 注:不同浏览器返回不一样,有些直接是文件名,有些是路径带文件名 *  * @param filePath *            E:\fun\picture1\item1.PNG; item2.png * @return item1.PNG;item2.png */public String getFileName(String filePath) {String fileName = filePath;if (filePath.contains("\\")) {int endIndex = filePath.lastIndexOf("\\");fileName = filePath.substring(endIndex + 1); // item1.PNG}return fileName;}/** *  * 创建多级文件目录 指定文件 如: e:/liu/hai/bing.tx */public File createFile(File file) {if (file.exists()) {return file;}try {String fileDir = file.getPath();int lastIndex = fileDir.lastIndexOf(File.separator);String dir = fileDir.substring(0, lastIndex);File dirFile = new File(dir);dirFile.mkdirs();if (file.createNewFile()) {return file;} else {return null;}} catch (IOException e) {return null;}}