- 浏览: 854011 次
文章分类
- 全部博客 (365)
- java (124)
- spring mvc (21)
- spring (22)
- struts2 (6)
- jquery (27)
- javascript (24)
- mybatis/ibatis (8)
- hibernate (7)
- compass (11)
- lucene (26)
- flex (0)
- actionscript (0)
- webservice (8)
- rabbitMQ/Socket (15)
- jsp/freemaker (5)
- 数据库 (27)
- 应用服务器 (21)
- Hadoop (1)
- PowerDesigner (3)
- EJB (0)
- JPA (0)
- PHP (2)
- C# (0)
- .NET (0)
- html (2)
- xml (5)
- android (7)
- flume (1)
- zookeeper (0)
- 证书加密 (2)
- maven (1)
- redis (2)
- cas (11)
最新评论
-
zuxianghuang:
通过pom上传报错 Artifact upload faile ...
nexus上传了jar包.通过maven引用当前jar,不能取得jar的依赖 -
流年末年:
百度网盘的挂了吧???
SSO单点登录系列3:cas-server端配置认证方式实践(数据源+自定义java类认证) -
953434367:
UfgovDBUtil 是什么类
Java发HTTP POST请求(内容为xml格式) -
smilease:
帮大忙了,非常感谢
freemaker自动生成源代码 -
syd505:
十分感谢作者无私的分享,仔细阅读后很多地方得以解惑。
Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
spring支持在网络应用程序处理文件上传,提供拔插的org.springframework.web.multipart.MultipartResolver对象 。
在写上传文件的前提下需提供两个jar包:
1.添加上传拦截,可指定上传的大小
- <!-- 上传拦截,如最大上传值及最小上传值 -->
- <bean id="multipartResolver"
- class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
- <!-- one of the properties available; the maximum file size in bytes -->
- <property name="maxUploadSize" value="100000" />
- </bean>
<!-- 上传拦截,如最大上传值及最小上传值 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- one of the properties available; the maximum file size in bytes --> <property name="maxUploadSize" value="100000" /> </bean>
2.添加java后台处理的API
- @RequestMapping(value = "/form", method = RequestMethod.POST)
- public String handleFormUpload(@RequestParam("name") String name,
- @RequestParam("file") MultipartFile file) {
- if (!file.isEmpty()) {
- byte[] bytes = file.getBytes();
- // 去理上传写文件代码
- }
@RequestMapping(value = "/form", method = RequestMethod.POST) public String handleFormUpload(@RequestParam("name") String name, @RequestParam("file") MultipartFile file) { if (!file.isEmpty()) { byte[] bytes = file.getBytes(); // 去理上传写文件代码 }
具体文件
spring_mvc.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:p="http://www.springframework.org/schema/p"
- xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.xsd">
- <!-- 注解资源扫描包路径 -->
- <context:component-scan base-package="org.spring.mvc" />
- <bean
- class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
- <bean
- class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
- <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀,在requestmapping输入的地址后自动调用该类进行视图解析-->
- <bean id="viewResolver"
- class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="viewClass"
- value="org.springframework.web.servlet.view.JstlView" />
- <property name="prefix" value="/" /><!-- 跳转页面的前缀路径 如 /web-inf/user/ -->
- <property name="suffix" value=".jsp"></property><!-- 跳转页面后缀 如 helloWorld.jsp-->
- </bean>
- <!-- 上传拦截,如最大上传值及最小上传值 -->
- <bean id="multipartResolver"
- class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
- <!-- one of the properties available; the maximum file size in bytes -->
- <property name="maxUploadSize" value="100000" />
- </bean>
- </beans>
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 注解资源扫描包路径 --> <context:component-scan base-package="org.spring.mvc" /> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" /> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀,在requestmapping输入的地址后自动调用该类进行视图解析--> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/" /><!-- 跳转页面的前缀路径 如 /web-inf/user/ --> <property name="suffix" value=".jsp"></property><!-- 跳转页面后缀 如 helloWorld.jsp--> </bean> <!-- 上传拦截,如最大上传值及最小上传值 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- one of the properties available; the maximum file size in bytes --> <property name="maxUploadSize" value="100000" /> </bean> </beans>
FileUploadController.java文件
- package org.spring.mvc.upload;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.List;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.spring.mvc.HelloWorldController;
- 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 org.springframework.web.multipart.MultipartHttpServletRequest;
- /**
- * 上传文件
- * @author chenyw
- *
- */
- @Controller
- @RequestMapping(value = "/toFileUpload")
- public class FileUploadController {
- private Logger logger = LoggerFactory.getLogger(HelloWorldController.class);
- /**
- * 单文件上传
- * @param name @RequestParam 取得name字段的值
- * @param file 文件
- * @return
- * @throws IOException
- */
- @RequestMapping(value = "/oneFileUpload", method = RequestMethod.POST)
- public String handleFormUpload(@RequestParam("name")
- String name, @RequestParam("file")
- MultipartFile file) throws IOException {
- logger.info("name:"+name);
- logger.info("上传文件:"+file.getOriginalFilename());
- if (!file.isEmpty()) {
- this.copyFile(file.getInputStream(), file.getOriginalFilename());
- }
- return "fileUpload/success";
- }
- /**
- * 多文件上传
- * @param request
- * @param name
- * @return
- * @throws Exception
- */
- @RequestMapping(value = "/multipartFileUpload",method = RequestMethod.POST)
- public String upload2(
- MultipartHttpServletRequest request ,
- @RequestParam("name") String name // 页面上的控件值
- ) throws Exception {
- List<MultipartFile> files = request.getFiles("file");
- for( int i=0; i<files.size() ;i++){
- if(! files.get(i).isEmpty()) {
- logger.info("上传文件:"+files.get(i).getOriginalFilename());
- this.copyFile(files.get(i).getInputStream(), files.get(i).getOriginalFilename());
- }
- }
- logger.info("success");
- return "fileUpload/success";
- }
- /**
- * 写文件到本地
- * @param in
- * @param fileName
- * @throws IOException
- */
- private void copyFile(InputStream in,String fileName) throws IOException{
- FileOutputStream fs = new FileOutputStream("d:/upload/"
- + fileName);
- byte[] buffer = new byte[1024 * 1024];
- int bytesum = 0;
- int byteread = 0;
- while ((byteread = in.read(buffer)) != -1) {
- bytesum += byteread;
- fs.write(buffer, 0, byteread);
- fs.flush();
- }
- fs.close();
- in.close();
- }
- }
package org.spring.mvc.upload; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.spring.mvc.HelloWorldController; 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 org.springframework.web.multipart.MultipartHttpServletRequest; /** * 上传文件 * @author chenyw * */ @Controller @RequestMapping(value = "/toFileUpload") public class FileUploadController { private Logger logger = LoggerFactory.getLogger(HelloWorldController.class); /** * 单文件上传 * @param name @RequestParam 取得name字段的值 * @param file 文件 * @return * @throws IOException */ @RequestMapping(value = "/oneFileUpload", method = RequestMethod.POST) public String handleFormUpload(@RequestParam("name") String name, @RequestParam("file") MultipartFile file) throws IOException { logger.info("name:"+name); logger.info("上传文件:"+file.getOriginalFilename()); if (!file.isEmpty()) { this.copyFile(file.getInputStream(), file.getOriginalFilename()); } return "fileUpload/success"; } /** * 多文件上传 * @param request * @param name * @return * @throws Exception */ @RequestMapping(value = "/multipartFileUpload",method = RequestMethod.POST) public String upload2( MultipartHttpServletRequest request , @RequestParam("name") String name // 页面上的控件值 ) throws Exception { List<MultipartFile> files = request.getFiles("file"); for( int i=0; i<files.size() ;i++){ if(! files.get(i).isEmpty()) { logger.info("上传文件:"+files.get(i).getOriginalFilename()); this.copyFile(files.get(i).getInputStream(), files.get(i).getOriginalFilename()); } } logger.info("success"); return "fileUpload/success"; } /** * 写文件到本地 * @param in * @param fileName * @throws IOException */ private void copyFile(InputStream in,String fileName) throws IOException{ FileOutputStream fs = new FileOutputStream("d:/upload/" + fileName); byte[] buffer = new byte[1024 * 1024]; int bytesum = 0; int byteread = 0; while ((byteread = in.read(buffer)) != -1) { bytesum += byteread; fs.write(buffer, 0, byteread); fs.flush(); } fs.close(); in.close(); } }
单文件上传页面oneFileUpload.jsp
- <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
- <title>My JSP 'oneFileUpload.jsp' starting page</title>
- <meta http-equiv="pragma" content="no-cache">
- <meta http-equiv="cache-control" content="no-cache">
- <meta http-equiv="expires" content="0">
- <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
- <meta http-equiv="description" content="This is my page">
- <!--
- <link rel="stylesheet" type="text/css" href="styles.css">
- -->
- </head>
- <body>
- This is my onefileUpload page. <br>
- <form method="POST" action="toFileUpload/oneFileUpload" enctype="multipart/form-data">
- <input type="text" name="name"/>
- <input type="file" name="file"/>
- <input type="submit"/>
- </form>
- </body>
- </html>
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'oneFileUpload.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> This is my onefileUpload page. <br> <form method="POST" action="toFileUpload/oneFileUpload" enctype="multipart/form-data"> <input type="text" name="name"/> <input type="file" name="file"/> <input type="submit"/> </form> </body> </html>
多文件上传页面multipartFileUpload.jsp
- <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
- <title>My JSP 'multipartFileUpload.jsp' starting page</title>
- <meta http-equiv="pragma" content="no-cache">
- <meta http-equiv="cache-control" content="no-cache">
- <meta http-equiv="expires" content="0">
- <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
- <meta http-equiv="description" content="This is my page">
- <!--
- <link rel="stylesheet" type="text/css" href="styles.css">
- -->
- </head>
- <body>
- This is multipartFileUpload page. <br>
- <form method="POST" action="toFileUpload/multipartFileUpload" enctype="multipart/form-data">
- <input type="text" name="name"/><br>
- <input type="file" name="file"/><br>
- <input type="file" name="file"/><br>
- <input type="submit"/><br>
- </form>
- </body>
- </html>
评论
3 楼
kcher_8
2014-03-13
多谢博主分享,终于把问题解决了。
2 楼
a52071453
2012-12-23
zhcheng 写道
我按照你写的配置上,为什么报400的错误呢!
你在试试 我亲身在项目上用的 。 把错误贴出来也可以
1 楼
zhcheng
2012-10-30
我按照你写的配置上,为什么报400的错误呢!
发表评论
-
jackson annotations注解详解
2015-01-13 11:34 18998官方WIKI:https://github.com/Fast ... -
Ehcache 整合Spring 使用页面、对象缓存
2012-11-02 19:56 1110Ehcache在很多项目中都出现过,用法也比较简 ... -
Spring 3.1 M1 中的缓存功能
2012-11-02 19:26 830本文转自:http://www.oschina.net/ ... -
深入剖析Spring Web源码(八) - 处理器映射,处理器适配器以及处理器的实现 - 基于简单控制器流程的实现
2012-10-31 13:37 13301.1.1.1 ... -
spring 源码 阅读 笔记 之 HandlerMapping
2012-10-31 12:59 1678SpringCVSBeanHTMLAnt ... -
spring mvc重复提交拦截器方法
2012-10-31 11:37 9018import javax.servlet.http.HttpS ... -
不重复配置——利用Spring通用化配置
2012-10-17 09:40 982还记得 如下这种配置吗: 1、struts2作用域 ... -
Ehcache 整合Spring 使用页面、对象缓存
2012-10-16 09:44 790Ehcache在很多项目中都出现过,用法也比较简单。一般的 ... -
SpringMVC文件上传 多文件
2012-10-15 17:27 7089必须明确告诉DispatcherServlet如何处理Mult ... -
Spring MVC 3.1新特性 生产者、消费者请求限定
2012-10-12 11:50 11516.6.5、生产者、消费者限定 6.6.5.1、基本概念 ... -
spring + mybatis 多数据源切换
2012-10-10 11:42 1565[代码] DbContextHold ... -
JasperReport与spring集成的三种方式
2012-09-26 17:29 1865最近要用JasperReport,试着和sprin ... -
Spring MVC+Jasper Report 及生成PDF的中文问题
2012-09-26 17:10 2先说两句报表框架的选择,JasperRepor ... -
Springmvc与jasperreport结合生成报表的一种方法
2012-09-26 16:42 1<script type="text/ja ... -
spring 3.1中的cache小结
2012-09-22 23:27 1017spring 3.1中有cache了,下 ... -
Spring MVC和Struts2的区别
2012-09-08 08:59 10401. 机制:spring mvc的入口是servlet,而st ... -
SpringMVC + spring3.1.1 + hibernate4.1.0 集成及常见问题总结
2012-06-19 17:34 1429一 开发环境 1、动态web工程 2、部分依赖 ... -
用spring MVC 生成Excel和PDF
2012-06-16 19:16 36351 用spring MVC 生成Excel和PDF http ... -
SpringMVC+FreeMarker实现半自动静态化
2012-06-14 13:53 2541感谢imyourgod的原贴http://to ... -
文件下载(只需要简单的四步),Java中都通用
2012-06-15 08:33 1228Javadownload文件下载Spring ...
相关推荐
总的来说,实现Spring MVC文件上传的进度条功能需要前端和后端的紧密配合。前端负责用户交互和进度信息的显示,后端则需处理分块上传、进度跟踪和异步响应。通过这样的方式,我们可以在不阻塞用户界面的情况下,提供...
在Spring MVC框架中,文件上传和下载是常见的功能需求,特别是在构建Web应用程序时。这个压缩包文件"Spring MVC 文件上传下载 后端 - Java.zip"包含的文档可能详细阐述了如何在Java后端实现这些功能。以下是关于...
在Spring MVC框架中,文件上传是一项常见的功能,它允许用户通过Web界面上传本地文件到服务器。这篇文章将深入探讨如何在Spring MVC中实现文件上传,并基于提供的链接和文件名称列表进行详细解析。 首先,理解文件...
在Spring MVC框架中,文件上传是一项常见的功能,用于接收用户通过表单提交的文件数据。这一功能对于构建Web应用程序,尤其是那些需要用户交互并处理上传文件的系统来说至关重要。本项目提供了一个完整的、经过测试...
本篇文章将深入探讨Spring MVC如何实现文件上传和下载。 ### 文件上传 1. **依赖配置**:在Spring MVC项目中,为了支持文件上传,需要引入Apache Commons FileUpload库,它提供了处理多部分HTTP请求的能力。在`pom...
这篇博客“spring mvc文件上传下载实例”将引导我们如何在Spring MVC项目中实现这两个功能。 首先,我们需要理解Spring MVC的基本概念。Spring MVC是Spring框架的一个模块,它提供了处理HTTP请求并返回响应的能力,...
Spring MVC 是一个强大的 web 应用开发框架,它提供了丰富的功能来处理用户请求,包括文件上传和下载。本文将深入探讨如何使用 Spring MVC 实现文件的上传与下载。 首先,要实现文件上传,我们需要引入一些必要的...
标题 "第五章 Spring MVC 文件上传" 涉及的核心知识点主要围绕Spring MVC框架中的文件上传功能,这是一个在Web开发中常见的需求,特别是处理用户通过表单提交的文件,如图片、文档等。在这个主题下,我们需要理解...
在Spring MVC框架中,文件上传是一项常见的功能,用于允许用户通过Web界面上传文件到服务器。在本篇博文中,我们将深入探讨如何实现这一功能,并基于`FileUploadController.java`这个类来讲解相关知识点。 首先,...
本书共计10章,分别介绍了快速搭建Spring Web应用、精通MVC结构、URL映射、文件上传与错误处理、创建Restful应用、保护应用、单元测试与验收测试、优化请求、将Web应用部署到云等内容,循序渐进地讲解了Spring MVC4...
在本文中,我们将深入探讨如何使用Spring MVC框架与Ajax技术结合来实现文件上传的功能。Spring MVC是Spring框架的一部分,提供了一种模型-视图-控制器(MVC)架构模式,用于构建Web应用程序。Ajax(Asynchronous ...
在本文中,我们将深入探讨如何使用Spring MVC框架与uploadify插件进行文件上传,特别是针对图片的上传。Spring MVC是Spring框架的一部分,专门用于构建Web应用程序,而uploadify是一款前端JavaScript插件,使得用户...
Spring MVC 文件上传下载代码实例 Spring MVC 文件上传下载代码实例中主要介绍了如何在 Spring MVC 框架中实现文件上传和下载的功能。下面是相关的知识点: 1. 文件上传的必要条件: 在 Spring MVC 中,文件上传...
在深入学习Spring MVC文件上传和下载的过程中,理解HTTP协议、表单提交以及Spring MVC的内部工作原理是非常重要的。同时,熟悉相关的API和最佳实践,能够帮助我们构建健壮且安全的文件上传下载功能。
在Spring MVC中实现文件上传并显示进度是一项常见的需求,特别是在用户需要等待较长时间的大型文件上传时。这个功能可以通过监听文件上传的进度并在前端实时更新来提升用户体验。下面将详细介绍如何利用Spring MVC...
在"ssm框架--spring mvc实现文件上传"这个项目中,我们将重点探讨如何在Spring MVC中实现实现文件上传的功能。 文件上传是Web应用中的常见需求,Spring MVC提供了便捷的API来处理这一任务。首先,你需要在表单中...
#### 二、Spring MVC文件上传配置 为了使Spring MVC能够处理文件上传,首先需要在Spring MVC的配置文件中添加相应的配置。这里以`springmvc-servlet.xml`为例: 1. **引入必要的命名空间**:确保配置文件包含了`...
本文档将详细介绍如何在Spring MVC环境中配置并实现文件上传功能,包括必要的`web.xml`配置、Spring配置文件(如`upload-servlet.xml`)设置及控制器的具体编写。 #### 二、`web.xml`配置详解 `web.xml`文件用于...