Springmvc 单文件上传功能

1.我们需要使用Apache Commons FileUpload组件,故在工程中应导入commons-io-2.0.1.jar commons-fileupload-1.2.2.jar两个jar文件(可在Appache官网下载)

在这里插入图片描述
2.配置MultiparResolver
首先使用CommonsMultipartResolver配置一个MultiparResolver解析器,配置到相应的springmvc.xml文件下:

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="50000000"/>
    <property name="defaultEncoding" value="utf-8"/>
</bean>

注: defaultEncoding:请求的编码格式,默认为ISO-8859-1,此处设置为UTF-8
maxUploadSize:上传文件大小的限制,单位为字节。
3.编写前台页面 addFile.xml:

<form action="addFile.do" method="post" enctype="multipart/form-data">
    文件:<input type="file" name="multipartFile"/>
    <input type="submit" value="保存"/>
</form>

4.准备接收文件:在这里插入图片描述注:红箭头标注的那块必须与上面表单的action相同。
5.编写文件上传后的后台代码:

/跳转addFile页面
@RequestMapping(value = "/addFile.do",method = RequestMethod.GET)
public String addFile(){
    return "addFile";
}
//处理文件上传的方法
@RequestMapping(value = "/addFile.do",method = RequestMethod.POST)
public  String addFile(HttpServletRequest request, @RequestParam(value="multipartFile",required = false) MultipartFile multipartFile, Model model){
    if (!multipartFile.isEmpty()){
        //获取文件上传的目标路径
      String url=  request.getServletContext().getRealPath("upload");
        System.out.println(url);
        //获取文件名
        String fileName= multipartFile.getOriginalFilename();
        //获取文件后缀
        String extentionName= fileName.substring(fileName.lastIndexOf(".")+1);
        //获取文件大小
        long size= multipartFile.getSize();
        long initalSize=50000000;
        if (size<initalSize){
            if (extentionName.equalsIgnoreCase("jpg") || extentionName.equalsIgnoreCase("png")){
                //可以上传文件
                //重命名文件名
                Date date = new Date();
                SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddhhmmss");
               //当前系统时间的字符串
                String now=sdf.format(date);
              //将时间字符串与文件名拼接在一起
                String name=now+fileName;
                File file= new File(url+File.separator+name);
                try {
                    multipartFile.transferTo(file);//上传成功
                    return "welcome";
                } catch (IOException e) {
                    e.printStackTrace();
                    model.addAttribute("mess","上传失败");
                    return "addFile";
                }
            }else {
                //文件后缀不符合
                model.addAttribute("mess","文件后缀只能是.jpg/.png");
                return "addFile";
            }
        }else {
            //大小超出范围
            model.addAttribute("mess","大小超出范围");
            return  "addFile";
        }
    }else {
        //如果文件为空
        model.addAttribute("mess","文件为空");
        return "addFile";
    }
}

注:上面所返回的 都是已经存在页面。
6.准备存放上传文件的目录,注意和上面代码中的路径保持一致
在这里插入图片描述
注意:空的目录idea不会更新到服务器(这应该是个bug),所以可以在里面随便放个文件,哪怕再删掉也行,迫使idea更新.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值