文档章节

springmvc - 文件上传

lemos
 lemos
发布于 2016/11/20 23:12
字数 506
阅读 27
收藏 2

#Springmvc 文件上传简介 使用servlet3 的 javax.servlet.http.Part API 接口实现文件上传。使用 multipart编码文件。

默认在单个请求中,只处理每个文件最大1Mb,最多10Mb的文件数据。

你可以覆盖那些值,也可以设置临时文件存储的位置(比如,存储到/tmp文件夹下)及传递数据刷新到磁盘的阀值(通过使用MultipartProperties类暴露的属性)。

如果你需要设置文件不受限制,可以设置spring.http.multipart.max-file-size属性值为-1。

#项目实例

##需求:在修改商品页面添加修改商品信息功能

##springmvc 对多部件内容的解析

一、在jsp页面配置enctype对多部件上传的支持

<form id="itemForm" action="${pageContext.request.contextPath }/items/editItemsSubmit.action" method="post"
      enctype="multipart/form-data">
    <input type="hidden" name="id" value="${itemsCustom.id }"/>
    修改商品信息:
    <table width="100%" border=1>

二、在springmvc.xml中配置multipart解析器

<!-- 图片上传解析器-->
<bean id="mulitpartResolver"
      class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="MaxUploadSize">
        <!-- 设为5M -->
        <value>5242880</value>
    </property>
</bean>

三、创建图片的虚拟目录

在conf/server.xml 中,添加 <Context docBase="物理目录" path="/pic" reloadable="false"/>

四、具体实现

springmvc.xml 文件的配置

<!-- 图片上传解析器-->
<bean id="multipartResolver"
      class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="MaxUploadSize">
        <!-- 设为5M -->
        <value>5242880</value>
    </property>
</bean>

editItems.jsp 的配置

<form id="itemForm" action="${pageContext.request.contextPath }/items/editItemsSubmit.action" method="post"
      enctype="multipart/form-data">
<tr>
    <td>商品图片</td>
    <td>
        <c:if test="${itemsCustom.pic !=null}">
            <img src="/pic/${itemsCustom.pic}" width=160 height=200/>
            <br/>
        </c:if>
        <input type="file"  name="items_pic"/>
    </td>
</tr>

controller方法

public String editItemsSubmit(Model model, HttpServletRequest request, Integer id,
                              @ModelAttribute("itemsCustom") @Validated(value = {ValidGroup1.class}) ItemsCustom itemsCustom,
                              BindingResult bindingResult,
                              MultipartFile  items_pic)throws Exception {


...

String originalFilename= items_pic.getOriginalFilename();
if (items_pic != null && originalFilename!=null && originalFilename.length()>0) {
    //图片的存储的物理路径
    String pic_path="E:\\Zen-Events\\Pictures\\tmp";
    //新的图片名称
    String newFileName = UUID.randomUUID() + originalFilename.substring(originalFilename.lastIndexOf("."));
    //新的图片存储地址
    File newFile = new File(pic_path, newFileName);
    //将图片写入到磁盘中
    items_pic.transferTo(newFile);
    //将图片名称写入到数据库对象中
    itemsCustom.setPic(newFileName);
}

五、个人理解

通过页面上传图片: <input type="file" name="items_pic"/>

在controller中: 上传组件的文件必须以 MultipartFile 这个类型来存储,以及传递处理数据。

由此,springmvc才 可以解析这个文件。

© 著作权归作者所有

共有 人打赏支持
lemos
粉丝 8
博文 184
码字总数 92482
作品 0
芜湖
后端工程师
私信 提问
再springMVC中自定义文件上传处理解决与原spring中MultipartResolve冲突问题

    相信很多朋友再用springmvc时都遇见了一个问题,那就是自带的获取上传的东西太慢,而且不知道如何修改,其实不然,spring框架既然给我们开放了这个接口,就一定遵从了可扩展性的原则...

Visitors
2018/07/30
0
0
Video-No.01 李守宏_SpringMVC基础与应用视频教程

1、SpringMVC基本配置 1)引入spring Jar包 2)配置web.xm文件,加载SpringMVC配置 <?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instanc......

蓝汀华韶
2015/03/22
0
0
spring mvc文件上传实现进度条

文件上传应该大部分人都接触过,一般都是基于commons-fileupload组件来实现,SpringMVC的文件上传功能也是在commons-fileupload组件提供的功能上面做了一些包装功能,使文件上传开发更容易方...

小天120
2014/02/10
0
20
SpringBoot | 第十七章:web应用开发之文件上传

前言 上一章节,我们讲解了利用实现前端页面渲染,从而实现动态网页的功能,同时也提出了兼容项目的解决方案。既然开始讲解web开发了,我们就接着继续往这个方向继续吧。通常,我们在做开发时...

oKong
2018/08/08
0
0
java web srpingmvc 上传文件,大于1MB的文件上传途中总是中断,求赐教

目前用的框架是spring springmvc mybatis,我上传文件的时候,稍大点的文件在本地测试,当然瞬间就能上传成功,但是放到服务器上测试的时候,稍大点的文件上传需要耗费时间,所以常常会没办法...

isevenun
2017/02/02
690
3

没有更多内容

加载失败,请刷新页面

加载更多

第1章

背景:因为最近在考教师资格证,考的是计算机学科,所以学科考的是:信息技术学科知识与教学能力;因此图书馆借了一本书,把最基本的知识看一遍,为之后的笔试和面试做充足的准备。 大学计算...

怪咖先生forever
34分钟前
1
0
element-ui之el-collapse-transition(折叠展开动画)源码解析学习

项目中发现同事使用了element-ui的el-collapse-transition来做折叠展开效果,打开源码看了下发现挺有意思,来解析学习一番。 el-collapse-transition的引入方式 // fade/zoom 等import 'e...

学霸猫
54分钟前
1
0
解释器模式_实战

前言 解释器模式是什么?这个设计模式其实比较冷门,不太会解释,用例子说明把。解释器模式一般用在sql,xml,json解析等场景。比如说你有一个json对象,你要获取这个对象中任意一个节点的值。...

grace_233
今天
6
0
告别2018

今天中午从喵喵家回来之后,倒头就睡到下午4点了。可能是之前透支的身体,在我放松下来后,开始觉得疲惫了,所以最近估计会进入嗜睡期。醒来之后,拿了包花生,开了瓶低糖菊花茶,听着网易云...

七木网络科技
今天
4
0
MySql数据库分表分区实践

1. 背景 —— 公司物联网项目 海量设备通过物联网服务接入云端,设备每30s上报一次自身数据(以下称为动态数据)。 物联网服务将设备上报的数据转发给数据处理网关,由数据入库网关执行批量入...

吴伟祥
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部