Spring3 文件上传
上传文件时,由于需要设置表单的编码,就需要加上enctype="multipart/form-data"这段,这段的意思是设置表单的MIME编码,为文件流形式,设置之后,form里面的input值将
以2进制的方式传过去,那么在控制其中的request就不能得到值了,解决方式是在spring的配置文件中加入
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
</bean>
加入这段,到这里还没有结束,如果按照传统的HttpServletRequest的方式,我们依然自动注入对象,必须将HttpServletRequest换为MultipartHttpServletRequest的方式,才能
即完成注入对象,又能得到文件流
具体代码如下
jsp
- <form act="...." enctype="multipart/form-data">
- <input type="text" name="name"/>
- <input type="file" name="file"/>
- <input type="submit" value="提交"/>
- </form>
java代码
- public String register(MultipartHttpServletRequest request,User user){
- MultipartFile file = request.getFile("file");//注意,这里我们以这种方式获得文件对象,file为input的name属性
- //其他保存操作
- }
这样我们就能即完成注入,又能活的文件对象
Spring1 推出的时候可以说是不小的颠覆了J2EE 的开发,彻底把EJB打败,将J2EE开发进行简化,
Spring2 推出以后完美的与多种开源框架与服务器的结合,让你对其拥抱的更紧,Spring变成了一个工具箱,一应俱全,
Spring3 推出以后让开发真正的得到简单化,并且Spring3支持REST风格,采用Spring3进行开发,简单的有点过分了。
如果说我在吹嘘,那么1行有效的代码就可以完成B/S模式的文件上传,呵呵。废话少说,先看代码:
清单1:
springmvc-servlet.xml
在springmvc-servlet.xml文件中添加以下代码:
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!– 设置上传文件大小的参数 –>
<property name="maxUploadSize" value="1000000"/>
</bean>
清单2:
web.xml
在web.xml文件中添加以下代码:
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
清单3
upload.html
建立一个普通的html文件,加入以下代码:
<form method="post" action="/SpringREST/image/imageUpload" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" value="upload"/>
</form>
清单4
ImageController.java
package com.javabloger.springrest.action;
import java.io.FileOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import com.javabloger.springrest.dao.ImageDAO;
@Controller
@RequestMapping("/image")
public class ImageController {
@RequestMapping("/imageUpload")
public String processImageUpload(
@RequestParam() MultipartFile file // 关键就是这句话起了作用
) throws Exception {
if (!file.isEmpty()) {
byte[] bytes = file.getBytes();
FileOutputStream fos = new FileOutputStream("d:/upload/"+file.getOriginalFilename()); // 上传到写死的上传路径
fos.write(bytes); //写入文件
}
System.out.println ("name: "+file.getOriginalFilename()+" size: "+file.getSize() ); // 打印文件大小和文件名称
return "redirect:/image"; // 跳转你所指定的页面名称
}
}
转载于:https://www.cnblogs.com/reallydo/p/3281463.html
Spring3 文件上传相关推荐
- Struts2.3.5+Hibernate3+Spring3.1基于注解实现的多文件上传,下载
Struts2.3.5+Hibernate3+Spring3.1基于注解实现的的多文件上传,下载,这里是上传文件到数据库中,上传控件可以增加和删除,有需要的朋友可以看看. 以下是源码下载地址:http ...
- springMVC3.0(文件上传,@RequestMapping加参数,@SessionAttributes,@ModelAttribute,转发,重定向,数值获取,传参,ajax,拦截器)
1.项目包结构如下: 2. spring配置文件springMVC.xml修改如下: <?xml version="1.0" encoding="UTF ...
- SpringMVC处理Json、文件上传、拦截器
SpringMVC处理Json.文件上传.拦截器 : 处理JSON 链接 http://repo1.maven.org/maven2/com/fasterxml/jackson/core/ 步骤 编写 ...
- SpringMVC中的文件上传与下载,json转换,及三大框架的整合
文章目录 文件上传 准备一个文件上传的表单 导入文件上传需要的jar包 配置文件上传解析器 编写文件上传的Controller控制器中的代码: 使用ResponseEntity返回值处理文件下载 使用 ...
- java前后台开发之文件上传
入职java已经快2个月了.做了一个多月的改bug,6天的开发,刚做完一个文件上传,得好好整理下. 文件上传的大体思路其实是一样的,前端通过表单的方式上传,后端解析这个表单请求中的内容,得到文件部分的 ...
- SpringBoot:MultipartResolver 文件上传、大小限制相关配置、实现原理与自定义
基于 SpringBoot 2.3.2.RELEASE Spring-web 5.2.8.RELEASE 问题 做上传下载文件时,SpringBoot获取的文件是MultipartFile,不想把文件 ...
- Fiddler2 模拟文件上传
最近遇到一个需求,需要上传音频文件, 服务端使用webService 通过spring3 进行文件上传.代码完成后使用 html 通过post 方式请求接口成功了,但不知道如何使用Fiddler2工具 ...
- Java框架-SpringMVC的应用(json数据交互、控制器方法返回值、文件上传)
1. 搭建SpringMVC开发环境 1.1 创建项目,添加依赖 <?xml version="1.0" encoding="UTF-8"?> &l ...
- springboot设置文件上传大小(tomcat默认1M)
application.yml # 设置文件上传大小(tomcat默认1M) server:tomcat:max-http-form-post-size: -1 spring:servlet:mult ...
最新文章
- 在Android使用新浪微博的开发平台API
- 建立自己的voc数据集_一次将自己的数据集制作成PASCAL VOC格式的惨痛经历
- 为什么晚结婚的离婚率低?与这个对于我们的启示。
- python中数字是常量吗,【python】常量与变量
- linux band0 手动重启,band,call,apply的区别以及手动封装
- node函数 python_成为Python大牛必须要掌握的高端语法(附链接代码)
- 自定判断代码的执行环境
- Android RecyclerView的滚动原理
- Atitit 数据与模板绑定法 目录 1.1. templet - 自定义列模板	1 1.2. 方式三:直接赋值模版字符。事实上,templet 也可以直接是一段 html 内容,如:	1 1.2.
- 安国AU6985+海力士 H27UBG8T2A量产
- 信捷XD/XC系列PLC 控制台达B2系列伺服电机程序,手动 自动,循环,循环次数设定
- linux搭建服务器有什么用处,Linux配置dns服务器作用是什么?
- MySQL报错Column xxxx in xxxx clause is ambiguous
- ERROR: ld.so: object ‘/usr/local/lib/libc2.28.so‘ from /etc/ld.so.preload cannot be preloaded ...
- matlab插图放大模糊,PPT中怎样简单处理放大后失真的图片
- Flink web ui面板功能简述
- 阿里iot 华为iot_11种用于开发IoT应用程序的IoT Visual编程工具
- 袁萌:Linux机器人来我家
- 王者荣耀最失败的英雄是?失败英雄应该有哪些特征?
- java中的双引号和单引号
热门文章
- 方案类:城中村社区网运营计划书-地方社区发展经典案例
- 利用OpenCV实现图像拼接的代码
- java 隐藏地址栏参数_要想在浏览器的地址栏上的URL中隐藏传输的参数,需要将form标签的method属性值设置为( )。 (5.0分)_学小易找答案...
- svn无法读取日志问题解决
- oracle中查看用户权限
- Go 读取 yaml 文件并解析
- leetcode算法题--Integer to Roman
- java a =a-=aa_Java求s=a+aa+aaa+aaaa+aa...a的值
- python 栈实现_Python实现栈
- 破windows xp登陆密码