SpringMVC_文件上传
1:创建文件上传的jsp文件(test_fileupload.jsp)
<body> <from enctype="multipart/form-data" method="post" action="/upload.do">选择图片:<input type="file" name="photo"><input type="submit" value="上传"> </from> </body>2:创建文件上传的Controller
在上传文件的方法中添加参数 MultiparFile,该参数本身是一个接口,该接口提供了文件上传的方法
// 获得文件名 getOriginalFilename()// 判断是否上传了文件,如果没有选择文件上传的话,此时结果为true isEmpty()//获得上传文件的文件类型 getContentType()// 将文件上传至指定目录中 transferTo(File file)// 获取表单中input的name值 getName()// 获取上传文件的byte数组 getBytes()// 获取上传文件的InputStream对象 getInputStream()方法中需要的另一个参数为 HttpSession,其作用是获取服务器中用来存放上传文件的路径
package com.doaoao.comtroller;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpSession; import java.io.File;@Controller public class UploadController {@RequestMapping("/upload.do")public ModelAndView upload(MultipartFile photo, HttpSession session) throws Exception{ModelAndView mv = new ModelAndView();// 判断用户是否上传文件if(!photo.isEmpty()){// 取得服务器上传的文件路径String path = session.getServletContext().getRealPath("/upload");// 获取文件名称String filename = photo.getOriginalFilename();// 限制文件的上传类型if("image/png".equals(photo.getContentType())){File file = new File(path,filename);photo.transferTo(file);}else{// 文件上传失败时mv.addObject("msg","请选择文件格式为png");mv.setViewName("/upload_fail");return mv;}}else{mv.addObject("msg","请上传一张png格式图片");mv.setViewName("/upload_fail");return mv;}// 文件上传成功时mv.setViewName("/upload_success");return mv;} }3:两种文件上传方式
# 1 使用 apache中的commons-io 和 commons-fileupload实现文件上传
# 2 使用servlet3.0实现文件上传
## 第一种文件上传方式:使用 apache中的commons-io 和 commons-fileupload实现文件上传
<!-- 导入相关jar包 --> <dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version> </dependency> <dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.3</version> </dependency>修改配置文件 springmvc.xml
<!--注册multipartResolver,由DispatcherServlet来负责调用,id的名称必须写为 multipartResolve--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><!--设置字符编码防止文件名乱码--><property name="defaultEncoding" value="utf-8"/><!--设置上传文件的总大小,单位是字节b--><property name="maxUploadSize" value="1048576"/><!--设置单个上传文件的大小,单位是字节b--><property name="maxUploadSizePerFile" value="1048576"/><!--设置内存缓冲区的大小,当超过该值的时候会写入到临时目录--><property name="maxInMemorySize" value="1048576"/><!--设置临时目录--><property name="uploadTempDir" value="tempupload"/><!--默认是false,如果设置为true的话,不会将文件路径去除,在IE浏览器下上传时会将路径名也作为文件名上传--><property name="preserveFilename" value="false"/><!--是否使用懒加载,默认是false--><property name="resolveLazily" value="true"/> </bean>上方配置文件中设置临时目录的作用:
1:提高安全性:将文件上传到临时目录,相当于对客户端隐藏了文件真实存放的目录
2:便于管理:当用户取消文件上传或文件上传失败时,可直接操作临时目录即可,无需对真实目录进行操作
## 第二种文件上传的方式:使用servlet3.0实现文件上传
修改web.xml配置文件的内容
<!--使用servlet3.0实现文件上传--> <multipart-config><!--临时文件路径,临时文件路径需配置在第一行--><location>/temp</location><!--单个上传文件的最大值,单位是byte--><max-file-size>100</max-file-size><!--总上传文件的最大值--><max-request-size>52428800</max-request-size><!--内存缓冲区的大小,当超过该值时,会写入到临时文件中,单位是byte--><file-size-threshold>1024</file-size-threshold> </multipart-config>修改配置文件 springmvc.xml
<bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver"/>
1:修改jsp文件种的内容
<from enctype="multipart/form-data" method="post" action="/upload.do">选择图片:<input type="file" name="photos">选择图片:<input type="file" name="photos">选择图片:<input type="file" name="photos"><input type="submit" value="上传"> </from>2:在Controller种添加方法,方法种添加参数 MultipartFile[],并在参数前加上注解@RequestParam
package com.doaoao.comtroller;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpSession; import java.io.File;@Controller public class UploadController {@RequestMapping("/upload.do")public ModelAndView upload(@RequestParam MultipartFile[] photos, HttpSession session) throws Exception{ModelAndView mv = new ModelAndView();// 取得服务器上传的文件路径String path = session.getServletContext().getRealPath("/upload");for(MultipartFile photo:photos) {// 判断用户是否上传文件if (!photo.isEmpty()) {// 获取文件名称String filename = photo.getOriginalFilename();// 限制文件的上传类型if ("image/png".equals(photo.getContentType())) {File file = new File(path, filename);photo.transferTo(file);} else {// 文件上传失败时mv.addObject("msg", "请选择文件格式为png");mv.setViewName("/upload_fail");return mv;}} else {mv.addObject("msg", "请上传一张png格式图片");mv.setViewName("/upload_fail");return mv;}}// 文件上传成功时mv.setViewName("/upload_success");return mv;} }...
本笔记参考自:小猴子老师教程 http://www.monkey1024.com
转载于:https://www.cnblogs.com/Doaoao/p/10693894.html
SpringMVC_文件上传相关推荐
- springboot设置文件上传大小(tomcat默认1M)
application.yml # 设置文件上传大小(tomcat默认1M) server:tomcat:max-http-form-post-size: -1 spring:servlet:mult ...
- 将文件上传至ftp服务器,FTP文件上传工具类,将文件上传至服务器指定目录
将文件上传至ftp服务器,传入File对象,将文件上传至ftp服务器 需要配置修改的点: 1. 服务器ip端口(服务器ip 端口22/21). 2. 服务器账号密码(服务器登录用户名密码). 3. 上 ...
- Springboot 多文件上传
其实多个文件和单个文件上传是一样的,可以使用同一个Controller 添加依赖 <!-- https://mvnrepository.com/artifact/commons-fileuplo ...
- django文件上传
Django在处理文件上传时,文件数据被打包封装在request.FILES中. 一.简单上传 首先,写一个form模型,它必须包含一个FileField: # forms.py from djang ...
- spring boot 文件上传工具类(bug 已修改)
以前的文件上传都是之前前辈写的,现在自己来写一个,大家可以看看,有什么问题可以在评论中提出来. 写的这个文件上传是在spring boot 2.0中测试的,测试了,可以正常上传,下面贴代码 第一步:引 ...
- 模拟文件上传(一):手动文件上传
关于上传文件,首先我的第一个案例是一个文本文件的上传,简单容易上手! 首先我们上传文件肯定就属于实体内容部分了:所以不能过GET方式请求了,要通过POST方式请求: 因为: 1.get方式是URL传值 ...
- Java中的文件上传2(Commons FileUpload:commons-fileupload.jar)
相比上一篇使用Servlet原始去实现的文件上传(http://www.cnblogs.com/EasonJim/p/6554669.html),使用组件去实现相对来说功能更多,省去了很多需要配置和处 ...
- 转 [JAVA] 使用 common-fileupload 实现文件上传
就在前段时间,还在苦于找到不到合适的上传组件,虽然很早就知道了 common-fileupload,但当时却因为没有找到如何获取表单参数的方法而使用 jspSmartUpload,历尽艰辛终于找到了它 ...
- 三层架构中ajax,基于mvc三层架构和ajax技术实现最简单的文件上传
前台页面提交文件 文件操作 上传文件 //上传文件 function upFile() { var file = document.getElementById("UpFile") ...
最新文章
- [JAVAEE] Thymeleaf 基本语法:常用表达式
- 智源新闻 | 麻省理工学院教授Max Tegmark报告交流会在北京举行
- 让汽车软件进入 iPhone 时代!
- javascript es6 == === is 区别
- Yii2使用Cookie的注意事项
- 计算机组成原理第6章-总线
- 五十六、教用Python中的turtle海龟画图(上篇)
- R-3.1.1 编译安装
- 高级java必须清楚的概念:原子性、可见性、有序性
- Android10创建文件Permission denied 失败
- 如何在内存序列化中使用Java深克隆对象
- pythonwebui自动化_python+selenium实现web端UI自动化测试
- 条件测试 linux,Linux的条件测试
- python全栈开发网络_Python 全栈开发:网络编程
- Deep Adversarial Decomposition: A Unified Framework for Separating Superimposed Images 论文阅读笔记
- 基于python的论文前言怎么写_毕业论文前言怎么写
- 罗兰贝格 | 适者生存:VUCA的世界
- PTA-链表学习-----奇数值结点链表
- ELK ILM 策略实现冷热数据分离 持续更新
- Delphi FastReport4.5安装说明
热门文章
- [NOTE] DSVW靶场练习笔记
- python分类预测降低准确率_python实现吴恩达机器学习练习3(多元分类器和神经网络)...
- [BUUCTF-pwn]——axb_2019_fmt64
- Linux下的/bin、/sbin、/usr/bin、/usr/sbin目录
- How-to: Use the ShareLib in Apache Oozie
- camel route 创建顺序
- Java语言语法语义分析器设计与实现
- Drools 5.1.1(一)
- SpringCloud学习(八)消息总线(Spring Cloud Bus)(Finchley版本)
- 【转】xargs命令详解,xargs与管道的区别