概述

在Web系统开发过程中,文件上传是普遍的功能,本文主要以一个简单的小例子,讲解SpringMVC中文件上传的使用方法,仅供学习分享使用,如有不足之处,还请指正。

文件上传依赖包

如下所示,文件上传依赖的jar包主要有两个:

commons-fileupload-1.4.jar
commons-io-2.6.jar

SpringMVC支持文件上传操作步骤

1. 配置支持文件上传的Bean

如下所示:主要配置默认的编码方式,和上传文件的限制大小

 <!-- 文件上传支持 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"></property>
<!-- 设置最大上传内容,单位是byte -->
<property name="maxUploadSize" value="1024000"></property>
</bean>

2. 在处理方法中,以MultipartFile 进行接收

如下所示:MultipartFile表示一个存储在内存中或者磁盘临时文件类型的文件内容。可以获取对应的输入流(InputStream),然后获取输入流中的字节数组内容。

     /**
* 显示upload页面,GET访问
* @return
*/
@RequestMapping(value="upload",method=RequestMethod.GET)
public ModelAndView upload(){
System.out.println("upload被调用了");
ModelAndView mav=new ModelAndView("upload");
return mav;
} /**
* 用于上传文件
* @return
* @throws IOException
*/
@RequestMapping(value="upload",method=RequestMethod.POST)
public ModelAndView upload(String desc,@RequestParam("file") MultipartFile file) throws IOException{
System.out.println("upload被调用了2");
String fileName=file.getOriginalFilename();
System.out.println("上传的源文件名:"+fileName);
System.out.println("文件描述:"+desc);
InputStream input= file.getInputStream();
OutputStream output=new FileOutputStream("D:\\upload\\"+fileName);
byte[] bs=new byte[1024];
int len=-1;
while((len=input.read(bs))!=-1){
output.write(bs,0,len);
}
output.close();
input.close();
ModelAndView mav=new ModelAndView("success");
return mav;
}

3. 前端(Jsp)页面中

如下所示:method="post" enctype="multipart/form-data"是关键

 <form action="upload" method="post" enctype="multipart/form-data">
文件:<input type="file" name="file"> <br />
描述:<input type="text" name="desc" /> <br />
<input type="submit" value="上传">
</form>

4. 运行进行测试

如下所示,输出日志如下:

upload被调用了
upload被调用了2
上传的源文件名:readme.txt
文件描述:1235
upload被调用了

备注

我们,已不再年轻,父母已老去,孩子已长大,吃不完的苦,扛不完的责任。活要自己拼命干,钱要自己辛苦赚。
我们,已不再年轻,该吃就吃,该睡就睡,该笑就笑,该休息就休息。

一起学SpringMVC之文件上传的更多相关文章

  1. springmvc图片文件上传接口

    springmvc图片文件上传 用MultipartFile文件方式传输 Controller package com.controller; import java.awt.image.Buffer ...

  2. SpringMVC学习--文件上传

    简介 文件上传是web开发中常见的需求之一,springMVC将文件上传进行了集成,可以方便快捷的进行开发. springmvc中对多部件类型解析 在 页面form中提交enctype="m ...

  3. Spring +SpringMVC 实现文件上传功能。。。

    要实现Spring +SpringMVC  实现文件上传功能. 第一步:下载 第二步: 新建一个web项目导入Spring 和SpringMVC的jar包(在MyEclipse里有自动生成spring ...

  4. SpringMVC之文件上传异常处理

    一般情况下,对上传的文件会进行大小的限制.如果超过指定大小时会抛出异常,一般会对异常进行捕获并友好的显示出来.以下用SpringMVC之文件上传进行完善. 首先配置CommonsMultipartRe ...

  5. springmvc实现文件上传

    springmvc实现文件上传 多数文件上传都是通过表单形式提交给后台服务器的,因此,要实现文件上传功能,就需要提供一个文件上传的表单,而该表单就要满足以下3个条件 (1)form表彰的method属 ...

  6. 【SpringMVC】文件上传Expected MultipartHttpServletRequest: is a MultipartResolver错误解决

    本文转载自:https://blog.csdn.net/lzgs_4/article/details/50465617 使用SpringMVC实现文件上传时,后台使用了 MultipartFile类, ...

  7. 关于SpringMVC的文件上传

    关于文件的上传,之前写过2篇文章,基于Struts2框架,下面给出文章链接: <关于Struts2的文件上传>:http://www.cnblogs.com/lichenwei/p/392 ...

  8. SpringMVC+ajax文件上传实例教程

    原文地址:https://blog.csdn.net/weixin_41092717/article/details/81080152 文件上传文件上传是项目开发中最常见的功能.为了能上传文件,必须将 ...

  9. 6.学习springmvc的文件上传

    一.文件上传前提与原理分析 1.文件上传必要前提: 2.文件上传原理分析: 3.需要引入的jar包: 二.传统方式文件上传程序 1.pom.xml <dependency> <gro ...

随机推荐

  1. 01-TensorFlow2.0基础

    01-TensorFlow基础 Tensorflow是什么 Google的开源软件库 采取数据流图,用于数值计算 支持多种平台 - GPU.CPU. 移动设备 最初用于深度学习,变得越来越通用 Ten ...

  2. 【并发技术16】线程同步工具Exchanger的使用

    如果两个线程在运行过程中需要交换彼此的信息,比如一个数据或者使用的空间,就需要用到 Exchanger 这个类,Exchanger 为线程交换信息提供了非常方便的途径,它可以作为两个线程交换对象的同步 ...

  3. 使用node.js将xmind导出的excel转换为json树

    xmind文件如图所示, 最终生成的数据结构如图  2,选择导出为excel文件,导出的excel文件打开如图 3,安装node读取excel模块 cnpm i  node-xlsx --save 4 ...

  4. linux终端界面的字颜色设置

    目录 目录 说明 PS1 颜色语法 保存设置 说明 在网上找了好多资料都不是很详细,要不就是语法有错误. 所以弄了好久才整明白了,写下来方便后面的人学习. 本人linux虚拟机版本为CentOs 6. ...

  5. 【解决】error pulling image configuration: Get https:// ...... x509: certificate has expired or is not yet valid

    [问题]进行镜像拉取时报错 [分析] 很多人会被第一句所蒙蔽,按照网上教程进行修改etc/sysconfig/docker,之后发现还是没有用. 其实这里重点是最后一句"certificat ...

  6. BZOJ2809 dispatching(左偏树)

    在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿.在这个帮派里,有一名忍者被称之为 Master.除了 Master以外,每名忍者都有且仅有一个上级.为保密,同时增强忍者们的 ...

  7. Coderfocers-616c

    You are given a rectangular field of n × m cells. Each cell is either empty or impassable (contains ...

  8. Java并发编程系列-(2) 线程的并发工具类

    2.线程的并发工具类 2.1 Fork-Join JDK 7中引入了fork-join框架,专门来解决计算密集型的任务.可以将一个大任务,拆分成若干个小任务,如下图所示: Fork-Join框架利用了 ...

  9. Python3 循环和判断小练习

    设计一个函数, 在桌面上创建10个文本, 以数字给它们命名 def text_creation(): path = r'C:\Users\Black\Desktop\test\\' for name ...

  10. 【Nodejs】375- 如何加快 Node.js 应用的启动速度

    我们平时在开发部署 Node.js 应用的过程中,对于应用进程启动的耗时很少有人会关注,大多数的应用 5 分钟左右就可以启动完成,这个过程中会涉及到和集团很多系统的交互,这个耗时看起来也没有什么问题. ...