当前位置: 首页 > news >正文

Spring MVC学习之——上传文件

在Spring MVC中加入上传文件的功能

1.添加依赖

<!--文件上传-->
<dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version>
</dependency>

2.配置文件上传解析器

<!--配置文件上传解析器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="maxUploadSize" value="5242880" /><property name="defaultEncoding" value="UTF-8" />
</bean>

3.测试

  • 编写controller

    注意在controller方法的参数中 MultipartFile upload的参数名一定要和jsp中上传input的name保持一致,否则会报空指针异常。

    @Controller
    @RequestMapping("/account")
    public class AccountController {@RequestMapping(path="/upload")public String upload(HttpServletRequest request, MultipartFile upload,Model model) throws IOException {System.out.println("springmvc方式的文件上传");//获取要上传的文件目录String path = request.getSession().getServletContext().getRealPath("/uploads");System.out.println("path:"+path);//根据文件上传的目录创建File对象,如果不存在则创建1个File对象File file = new File(path);if(!file.exists()){//创建一个file对象file.mkdirs();}//获取文件上传名称String filename = upload.getOriginalFilename();//完成文件上传upload.transferTo(new File(path,filename));model.addAttribute("msg", "欢迎你 springmvc");return "success";}
    }
    
  • 在index.jsp里面定义超链接

    注意表单在加入上传的input后,一定要写enctype=“multipart/form-data”,否则controller会接收不到,报错空指针

        <form action="/account/upload" method="post" enctype="multipart/form-data">文件: <input type="file" name="upload"></input><input type="submit" value="提交"></form>
    

相关文章:

  • C# .NET读取Excel文件并将数据导出到DataTable、数据库及文本
  • 什么是CSS Sprite,以及如何在页面或网站中使用它
  • 【mfc/VS2022】绘图工具设计-绘制基本图元2
  • 常用中间件漏洞
  • 笨蛋学设计模式行为型模式-观察者模式【14】
  • “深入理解网络科学与自定义网络构建“
  • 如何用mysql或者zk分配​​机器id
  • Fpga开发笔记(二):高云FPGA发开发软件Gowin和高云fpga基本开发过程
  • 听力损失是不是只和年龄有关?听损还能恢复吗?……15秒带你看清真相
  • 从请购到结算,轻松搞定!云迈ERP系统助力企业采购管理全流程!
  • 【机器学习】四大类监督学习_模型选择与模型原理和场景应用_第03课
  • MySQL作业
  • 29、WEB攻防——通用漏洞SQL注入增删改查盲注延迟布尔报错
  • C //练习 6-4 编写一个程序,根据单词的出现频率按降序打印输入的各个不同单词,并在每个单词的前面标上它的出现次数。
  • 【蓝桥杯EDA设计与开发】立创开源社区分享的关于蓝桥被EDA真题与仿真题的项目分析
  • 【Leetcode】104. 二叉树的最大深度
  • Angular 响应式表单 基础例子
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • Docker容器管理
  • gf框架之分页模块(五) - 自定义分页
  • Java反射-动态类加载和重新加载
  • jdbc就是这么简单
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Material Design
  • V4L2视频输入框架概述
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 从PHP迁移至Golang - 基础篇
  • 后端_ThinkPHP5
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 看域名解析域名安全对SEO的影响
  • 让你的分享飞起来——极光推出社会化分享组件
  • 双管齐下,VMware的容器新战略
  • 微信小程序填坑清单
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 终端用户监控:真实用户监控还是模拟监控?
  • ​学习一下,什么是预包装食品?​
  • ###项目技术发展史
  • #if和#ifdef区别
  • #NOIP 2014#Day.2 T3 解方程
  • $refs 、$nextTic、动态组件、name的使用
  • (C++)八皇后问题
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (独孤九剑)--文件系统
  • (力扣)1314.矩阵区域和
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (十) 初识 Docker file
  • (五)Python 垃圾回收机制
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)Scala的“=”符号简介
  • (转)树状数组
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .apk 成为历史!
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET Core 将实体类转换为 SQL(ORM 映射)