Spring上传文件学习笔记

来源:互联网 发布:云南羚澜和天度网络 编辑:程序博客网 时间:2024/05/20 10:23
//采用这种方法,spring配置文件中必须加上这句<property name="resolveLazily" value="true"/>

MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());

使用springMVC对文件上传的解析器来处理文件上传的时候需要在spring的applicationContext里面加上springMVC提供的MultipartResolver的申明这样客户端请求的时候 springMVC会检查request里面是否包含多媒体信息 如果包含了就会使用MultipartResolver进行解析,springMVC会使用一个支持文件 处理的MultipartHttpServletRequest来包裹当前的HttpServletRequest然后使用MultipartHttpServletRequest就可以对文件进行处理了。

一、配置文件:
SpringMVC 用的是 的MultipartFile来进行文件上传 所以我们首先要配置MultipartResolver:用于处理表单中的file

二、创建一个简单的上传表单:

  1. <form action="myAuthIncome/authImageUpload" method="post" enctype="multipart/form-data">  
  2.     选择文件:<input type="file" name="file">  
  3.     <input type="submit" value="提交">   
  4. </form> 
注意要在form标签中加上enctype="multipart/form-data"表示该表单是要处理文件的,这是最基本的东西

三、编写上传控制类 

MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
            if (resolver.isMultipart(request)) {
                StringBuffer sb = new StringBuffer();
                
                String randomName = StringUtil.getRandomFileName();
                logger.info("随机生成新的文件名 :  "+randomName);
                String uploadFileName = incomeCer.getOriginalFilename();
                String newFileName = "";
                if(StringUtils.isNotBlank(uploadFileName)){
                    String suffix = uploadFileName.substring(uploadFileName.indexOf("."));
                    newFileName = randomName+suffix;
                    String savePath = basePath+"/"+newFileName;
                    File saveFile = new File(savePath);
                    File parentFile = saveFile.getParentFile();
                    if(saveFile.exists()) {
                        saveFile.delete();
                    }else {
                        if (!parentFile.exists()) {
                            parentFile.mkdirs();
                        }
                    }
                    FileUtils.copyInputStreamToFile(incomeCer.getInputStream(), saveFile);
                }

0 0
原创粉丝点击