Spring上传文件学习笔记

本文详细介绍了在Spring MVC中配置文件上传解析器并处理上传文件的方法,包括配置MultipartResolver、创建上传表单、编写上传控制类等步骤,确保客户端请求能够正确解析并处理多媒体文件。
//采用这种方法,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);
                }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值