上传文件时,由于需要设置表单的编码,就需要加上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

[xhtml] view plaincopy
  1. <form act="...." enctype="multipart/form-data">
  2. <input type="text"  name="name"/>
  3. <input type="file"  name="file"/>
  4. <input type="submit"  value="提交"/>
  5. </form>

java代码

[java] view plaincopy
  1. public String register(MultipartHttpServletRequest request,User user){
  2. MultipartFile file  = request.getFile("file");//注意,这里我们以这种方式获得文件对象,file为input的name属性
  3. //其他保存操作
  4. }

这样我们就能即完成注入,又能活的文件对象

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 文件上传相关推荐

  1. Struts2.3.5+Hibernate3+Spring3.1基于注解实现的多文件上传,下载

    Struts2.3.5+Hibernate3+Spring3.1基于注解实现的的多文件上传,下载,这里是上传文件到数据库中,上传控件可以增加和删除,有需要的朋友可以看看. 以下是源码下载地址:http ...

  2. springMVC3.0(文件上传,@RequestMapping加参数,@SessionAttributes,@ModelAttribute,转发,重定向,数值获取,传参,ajax,拦截器)

    1.项目包结构如下: 2.       spring配置文件springMVC.xml修改如下: <?xml version="1.0" encoding="UTF ...

  3. SpringMVC处理Json、文件上传、拦截器

    SpringMVC处理Json.文件上传.拦截器 : 处理JSON 链接 http://repo1.maven.org/maven2/com/fasterxml/jackson/core/ 步骤 编写 ...

  4. SpringMVC中的文件上传与下载,json转换,及三大框架的整合

    文章目录 文件上传 准备一个文件上传的表单 导入文件上传需要的jar包 配置文件上传解析器 编写文件上传的Controller控制器中的代码: 使用ResponseEntity返回值处理文件下载 使用 ...

  5. java前后台开发之文件上传

    入职java已经快2个月了.做了一个多月的改bug,6天的开发,刚做完一个文件上传,得好好整理下. 文件上传的大体思路其实是一样的,前端通过表单的方式上传,后端解析这个表单请求中的内容,得到文件部分的 ...

  6. SpringBoot:MultipartResolver 文件上传、大小限制相关配置、实现原理与自定义

    基于 SpringBoot 2.3.2.RELEASE Spring-web 5.2.8.RELEASE 问题 做上传下载文件时,SpringBoot获取的文件是MultipartFile,不想把文件 ...

  7. Fiddler2 模拟文件上传

    最近遇到一个需求,需要上传音频文件, 服务端使用webService 通过spring3 进行文件上传.代码完成后使用 html 通过post 方式请求接口成功了,但不知道如何使用Fiddler2工具 ...

  8. Java框架-SpringMVC的应用(json数据交互、控制器方法返回值、文件上传)

    1. 搭建SpringMVC开发环境 1.1 创建项目,添加依赖 <?xml version="1.0" encoding="UTF-8"?> &l ...

  9. springboot设置文件上传大小(tomcat默认1M)

    application.yml # 设置文件上传大小(tomcat默认1M) server:tomcat:max-http-form-post-size: -1 spring:servlet:mult ...

最新文章

  1. 在Android使用新浪微博的开发平台API
  2. 建立自己的voc数据集_一次将自己的数据集制作成PASCAL VOC格式的惨痛经历
  3. 为什么晚结婚的离婚率低?与这个对于我们的启示。
  4. python中数字是常量吗,【python】常量与变量
  5. linux band0 手动重启,band,call,apply的区别以及手动封装
  6. node函数 python_成为Python大牛必须要掌握的高端语法(附链接代码)
  7. 自定判断代码的执行环境
  8. Android RecyclerView的滚动原理
  9. Atitit 数据与模板绑定法 目录 1.1. templet - 自定义列模板 1 1.2. 方式三:直接赋值模版字符。事实上,templet 也可以直接是一段 html 内容,如: 1 1.2.
  10. 安国AU6985+海力士 H27UBG8T2A量产
  11. 信捷XD/XC系列PLC 控制台达B2系列伺服电机程序,手动 自动,循环,循环次数设定
  12. linux搭建服务器有什么用处,Linux配置dns服务器作用是什么?
  13. MySQL报错Column xxxx in xxxx clause is ambiguous
  14. ERROR: ld.so: object ‘/usr/local/lib/libc2.28.so‘ from /etc/ld.so.preload cannot be preloaded ...
  15. matlab插图放大模糊,PPT中怎样简单处理放大后失真的图片
  16. Flink web ui面板功能简述
  17. 阿里iot 华为iot_11种用于开发IoT应用程序的IoT Visual编程工具
  18. 袁萌:Linux机器人来我家
  19. 王者荣耀最失败的英雄是?失败英雄应该有哪些特征?
  20. java中的双引号和单引号

热门文章

  1. 方案类:城中村社区网运营计划书-地方社区发展经典案例
  2. 利用OpenCV实现图像拼接的代码
  3. java 隐藏地址栏参数_要想在浏览器的地址栏上的URL中隐藏传输的参数,需要将form标签的method属性值设置为( )。 (5.0分)_学小易找答案...
  4. svn无法读取日志问题解决
  5. oracle中查看用户权限
  6. Go 读取 yaml 文件并解析
  7. leetcode算法题--Integer to Roman
  8. java a =a-=aa_Java求s=a+aa+aaa+aaaa+aa...a的值
  9. python 栈实现_Python实现栈
  10. 破windows xp登陆密码