文档章节

springmvc - 文件上传

lemos
 lemos
发布于 2016/11/20 23:12
字数 506
阅读 26
收藏 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
粉丝 7
博文 180
码字总数 91399
作品 0
芜湖
后端工程师
私信 提问
再springMVC中自定义文件上传处理解决与原spring中MultipartResolve冲突问题

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

Visitors
07/30
0
0
spring mvc文件上传实现进度条

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

小天120
2014/02/10
0
20
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
SpringBoot | 第十七章:web应用开发之文件上传

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

oKong
08/08
0
0
文件的上传和下载--SpringMVC

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

一飞要上天
08/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

什么是自然语言处理技术

自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域。自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计...

本宫没空2
1分钟前
0
0
移动端关闭虚拟键盘

$("#select_date").focus(function(){ document.activeElement.blur(); });

niuhongxia
1分钟前
0
0
Ubuntu18.04安装RabbitMQ(正确安装)

1、安装erlang 由于rabbitMq需要erlang语言的支持,在安装rabbitMq之前需要安装erlang sudo apt-get install erlang-nox 2、安装Rabbitmq 更新源 sudo apt-get update 安装 sudo apt-get ins...

hansonwong
10分钟前
0
0
如何在以太坊开发发行自己的ERC-20数字货币

今天我将向你展示如何在以太坊区块链上开发你自己的加密货币并将其出售!我将向你展示如何使用以太坊智能合约逐步创建自己的ERC-20代币和众筹销售,如何测试智能合约,如何将智能合约部署到以...

geek12345
11分钟前
0
0
Vlock用于有多个用户访问控制台的共享 Linux 系统

当你在共享的系统上工作时,你可能不希望其他用户偷窥你的控制台中看你在做什么。如果是这样,我知道有个简单的技巧来锁定自己的会话,同时仍然允许其他用户在其他虚拟控制台上使用该系统。 ...

linuxprobe16
12分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部