Spring mvc文件上传实现

jsp页面客户端表单编写

三个要素:

1.表单项type=“file”

2.表单的提交方式:post

3.表单的enctype属性是多部分表单形式:enctype=“multipart/form-data”

会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来表名文件类型;content-disposition,用来说明字段的一些信息;由于有boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件。

3.1.当form表单修改为多部分表单时,request.getParameter()将失效。

3.2.enctype=“application/x-www-form-urlencoded”时,form表单的正文内容格式是:key=value&key=value&key=value

3.3.当form表单的enctype取值为Mutilpart/form-data时,请求正文内容就变成多部分形式:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/quick16" method="post" enctype="multipart/form-data">
名称:<input type="text" name="name"><br>
文件:<input type="file" name="uploadFile">
<input type="submit" value="点击提交">
</form>
</body>
</html>

需要导入的jar坐标

<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>

配置文件上传解析器

 <bean id="commonsMultipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--上传文件的编码类型-->
<property name="defaultEncoding" value="utf-8"></property>
<!--上传单个文件的大小-->
<property name="maxUploadSizePerFile" value="50000000"></property>
<!--上传文件的总大小-->
<property name="maxUploadSize" value="54288600"></property>
</bean>

编写文件上传代码

  @RequestMapping(value = "/quick17")
/* 告诉SpringMvc框架,方法返回的字符串不是跳转是直接在http响应体中返回*/
@ResponseBody
public void save17(String username, MultipartFile uploadFile) throws IOException {
/*获取原始文件名*/
String originalFilename = uploadFile.getOriginalFilename();
/*保存到服务器上这里是本地*/
uploadFile.transferTo(new File("F:\\upload\\"+originalFilename));
}

上传多个文件

jsp表单代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/quick18" method="post"
enctype="multipart/form-data">
名称:<input type="text" name="name"><br>
文件1:<input type="file" name="uploadFiles">
文件2: <input type="file" name="uploadFiles">
<input type="submit" value="点击提交">
</form> </body>
</html>

服务器端代码

@RequestMapping(value = "/quick18")
/* 告诉SpringMvc框架,方法返回的字符串不是跳转是直接在http响应体中返回*/
@ResponseBody
public void save18(String username, MultipartFile[] uploadFiles) throws IOException {
for (MultipartFile uploadFile : uploadFiles) {
/*获取原始文件名*/
String originalFilename = uploadFile.getOriginalFilename();
/*保存到服务器上这里是本地*/
uploadFile.transferTo(new File("F:\\upload\\"+originalFilename));
}
}

成功保存到本地

以上就是SpringMVC系列的第三章,主要侧重SpringMVC上传文件的操作,我后续会持续更新Springmvc系列课程,本博客主要侧重于数据结构于算法和java开发,觉得我的文章有帮助的小伙伴可以关注我,有疑问可评论私信,相逢即是缘,大家高处见

Spring mvc文件上传实现的更多相关文章

  1. Spring MVC 笔记 —— Spring MVC 文件上传

    文件上传 配置MultipartResolver <bean id="multipartResolver" class="org.springframework.w ...

  2. Spring MVC文件上传教程 commons-io/commons-uploadfile

    Spring MVC文件上传教程 commons-io/commons-uploadfile 用到的依赖jar包: commons-fileupload 1.3.1 commons-io 2.4 基于 ...

  3. 【Java Web开发学习】Spring MVC文件上传

    [Java Web开发学习]Spring MVC文件上传 转载:https://www.cnblogs.com/yangchongxing/p/9290489.html 文件上传有两种实现方式,都比较 ...

  4. Spring mvc 文件上传到文件夹(转载+心得)

    spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...

  5. spring mvc 文件上传 ajax 异步上传

    异常代码: 1.the request doesn't contain a multipart/form-data or multipart/mixed stream, content type he ...

  6. spring mvc文件上传(单个文件上传|多个文件上传)

    单个文件上传spring mvc 实现文件上传需要引入两个必须的jar包    1.所需jar包:                commons-fileupload-1.3.1.jar       ...

  7. Strut2 和Spring MVC 文件上传对比

    在Java领域中,有两个常用的文件上传项目:一个是Apache组织Jakarta的Common-FileUpload组件 (http://commons.apache.org/proper/commo ...

  8. Spring MVC 文件上传 & 文件下载

    索引: 开源Spring解决方案--lm.solution 参看代码 GitHub: pom.xml WebConfig.java index.jsp upload.jsp FileUploadCon ...

  9. 【Spring】Spring MVC文件上传--整合bootstrap-fileinput和jQuery-File-Upload

    前言 这里分享两个使用Spring MVC进行文件上传的简单示例, 分别整合bootstrap-fileinput 和 Jquery File Upload , 代码十分简单, 都是入门的示例,因此这 ...

随机推荐

  1. LC算法技巧总结(二):双指针和滑动窗口技巧

    我把双指针技巧再分为两类,一类是「快慢指针」,一类是「左右指针」.前者解决主要解决链表中的问题,比如典型的判定链表中是否包含环:后者主要解决数组(或者字符串)中的问题,比如二分查找. 一.快慢指针的常 ...

  2. Lambda表达式看这篇基本就够用了

    本文讯] 2020.05.08  polo  写博不易,尊重知识! Lambda  是java8 引入的一个新特性,闭包,又叫函数式接口,下面介绍下,常用的lambda表达式方式: 所谓的将函数作为一 ...

  3. MySQL安装错误Couldn't find MySQL server

    Starting MySQL ERROR! Couldn't find MySQL server (/usr/local/mysql/bin/mysqld_safe) 昨天rpm安装MySQL5.7后 ...

  4. Catalina 动态壁纸相关设置

    关闭SIP 重启,在开机时一直按Command+r进入recovery模式. 打开终端,如图所示: 在终端中输入命令,回车: csrutil disable 然后重启 设置动态壁纸 首先需在Dynam ...

  5. web网站——nginx,LNMP部署03

    nginx功能: (1)web服务器: 默认网页目录为:/usr/share/nginx/html (2)反向代理服务器: nginx代替客户端访问后端服务器,后端服务器只知道是nginx的请求,并将 ...

  6. maximo入门----用户使用提要

    其实七月初就知道自己要做maximo了,但是那个时候

  7. 手把手教你在容器服务 TKE 上使用 LB 直通 Pod

    什么是 LB 直通 Pod ? Kubernetes 官方提供了 NodePort 类型的 Service,即给所有节点开一个相同端口用于暴露这个 Service,大多云上 LoadBalancer ...

  8. VueX中state变化捕捉不到_getters监测不到state的变化

    原因 可能有多种原因, 现在我说一下我碰到的一种情况: state种有一个变量叫state,它是一个json对象, 可把我害惨了.因为他这个json长这个样: messageBox:{ friendI ...

  9. React代码开发规范

    前言 一般在团队开发中每个人的代码习惯都不太一样,这样就会导致代码风格不一致,以致于维护和修改bug的时候看别人的代码成为一种痛苦...这种情况尤其在前端开发中尤为明显.因为关于前端的开发规范貌似也没 ...

  10. Spring AOP系列(一)— 代理模式

    Spring AOP系列(一)- 代理模式 AOP(Aspect Oriented Programming)并没有创造或使用新的技术,其底层就是基于代理模式实现.因此我们先来学习一下代理模式. 基本概 ...