文档章节

springmvc - 文件上传

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

#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
粉丝 6
博文 178
码字总数 90644
作品 0
芜湖
后端工程师
再springMVC中自定义文件上传处理解决与原spring中MultipartResolve冲突问题

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

Visitors
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
08/08
0
0
文件的上传和下载--SpringMVC

文件的上传和下载是项目开发中最常用的功能,例如图片的上传和下载、邮件附件的上传和下载等。 接下来,将对Spring MVC环境中文件的上传和下载进行详细的讲解。 一.文件上传 多数文件上传都...

一飞要上天
08/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

TypeScript基础入门之高级类型的可辨识联合(Discriminated Unions)

转发 TypeScript基础入门之高级类型的可辨识联合(Discriminated Unions) 高级类型 可辨识联合(Discriminated Unions) 你可以合并单例类型,联合类型,类型保护和类型别名来创建一个叫做 ...

durban
11分钟前
1
0
画图工具

目标是不要让我自己摆放,那样会打断我的思路。要自己会摆放,我写字就好。 纠结对齐的我在也不会因为一个像素的问题小心翼翼的移动鼠标了。因为它对不齐你也管不了。 Graphviz https://www...

郭大鹏
11分钟前
1
0
在Visual Studio中使用GitHub(使用篇)

上一篇中已经介绍了如何在windows下安装和配置Git,并且详细说明了如何和GitHub连接。 这里就详细的说明下如何在Visual Studio中使用GitHub。这里也是一个简单的Git教程。 注:非常非常简单的...

Jokeny
11分钟前
1
0
tomcat 在liunx系统中shutdown后进程仍然存在解决办法

这个在windows下没有碰到过,因为此前跑Tomcat都是以服务而不是命令脚本的形式跑的,而且已经换了一个项目,所以暂时不考察windows下是否存在该问题。 难道是Tomcat版本问题?或者用带内存泄...

乱舞
13分钟前
1
0
区块链10年了,还未落地,它失败了吗?

几乎每个人,甚至是对通证持怀疑态度的人,都对区块链的技术有积极的看法,因为它有可能改变世界。然而,区块链技术问世已经10年了,我们仍然没有真正的用上区块链技术。 有人说,比特币是建...

linux-tao
17分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部