`
一纸红颜岂值倾尽天下
  • 浏览: 28471 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

springmvc文件上传下载

阅读更多

springmvc上传下载功能 参照网上代码写了一个简单的例子

 

1、需要导入jar包:ant.jar、commons-fileupload.jar、connom-io.jar。当然spring jar包不可缺少的哦  我这里用的是spring+springmvc+hibernate  可以到官网上直接下载springmvcjar即可

 

2、springmvc.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:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context-3.2.xsd
	http://www.springframework.org/schema/mvc
	http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
	
	
<!-- 扫描包 -->
<context:component-scan base-package="com.ai.customer" />

 <!-- 启动注解 -->
 <mvc:annotation-driven />


<!-- 文件上传 -->
 <bean id="multipartResolver"  
   class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
   <!-- 设置上传文件的最大尺寸为10MB -->  
   <property name="maxUploadSize">  
       <value>10000000</value>  
   </property>  
  </bean>  


<!--  静态文件访问 -->
 <mvc:default-servlet-handler/> 
 <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --> 
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
 
 	<property name="prefix" value="/"/>
 	<property name="suffix" value=".jsp"/>	
 </bean> 
 
</beans>

 3、web.xml配置

<servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath*:config/spring/spring-*.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
<filter>
    <filter-name>codeUTF-8</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>codeUTF-8</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

 

4、程序代码块

package com.ai.customer.controller;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class FileUploadController {

	/*
	 * SpringMVC中的文件上传
	 * @第一步:由于SpringMVC使用的是commons-fileupload实现,故将其组件引入项目中
	 * @这里用到的是commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar
	 * @第二步:spring-mvx中配置MultipartResolver处理器。可在此加入对上传文件的属性限制
	 *  <bean id="multipartResolver"  
	 *  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	 *     <!-- 设置上传文件的最大尺寸为10MB -->  
	 *        <property name="maxUploadSize">  
	 *            <value>10000000</value>  
	 *         </property>  
	 * </bean> 
	 * 第三步:在Controller的方法中添加MultipartFile参数。该参数用于接收表单中file组件的内容
	 *第四步:编写前台表单。注意enctype="multipart/form-data"以及<input type="file" name="****"/>
	 *  如果是单个文件 直接使用MultipartFile 即可
	 */ 

	/**********************上传代码**************************/
	@RequestMapping("/upload.do")
	public ModelAndView upload(String name,
			//上传多个文件
			@RequestParam("file") MultipartFile[] file,
			HttpServletRequest request) throws IllegalStateException,
			IOException {
		
		//获取文件 存储位置
		String realPath = request.getSession().getServletContext()
				.getRealPath("/uploadFile");
		
		File pathFile = new File(realPath);
		
		if (!pathFile.exists()) {
			//文件夹不存 创建文件
			pathFile.mkdirs();
		}
		for (MultipartFile f : file) {
			
			System.out.println("文件类型:"+f.getContentType());
			System.out.println("文件名称:"+f.getOriginalFilename());
			System.out.println("文件大小:"+f.getSize());
			System.out.println(".................................................");
			//将文件copy上传到服务器
			f.transferTo(new File(realPath + "/" + f.getOriginalFilename()));
			 //FileUtils.copy
		}
		//获取modelandview对象
		ModelAndView view = new ModelAndView();
		view.setViewName("redirect:index.jsp");
		return view;
	}
	
	
	
	/********下载代码*************/
    @RequestMapping(value = "download.do")  
    public ModelAndView download(HttpServletRequest request,  
            HttpServletResponse response) throws Exception {  
  
//        String storeName = "Spring3.xAPI_zh.chm";  
    	String storeName="房地.txt";
        String contentType = "application/octet-stream";  
        FileUploadController.download(request, response, storeName, contentType);  
        return null;  
    }  
    
    
    //文件下载 主要方法
    public static void download(HttpServletRequest request,  
            HttpServletResponse response, String storeName, String contentType
           ) throws Exception {  
    	
        request.setCharacterEncoding("UTF-8");  
        BufferedInputStream bis = null;  
        BufferedOutputStream bos = null;  
  
        //获取项目根目录
        String ctxPath = request.getSession().getServletContext()  
                .getRealPath("");  
        
        //获取下载文件露肩
        String downLoadPath = ctxPath+"/uploadFile/"+ storeName;  
  
        //获取文件的长度
        long fileLength = new File(downLoadPath).length();  

        //设置文件输出类型
        response.setContentType("application/octet-stream");  
        response.setHeader("Content-disposition", "attachment; filename="  
                + new String(storeName.getBytes("utf-8"), "ISO8859-1")); 
        //设置输出长度
        response.setHeader("Content-Length", String.valueOf(fileLength));  
        //获取输入流
        bis = new BufferedInputStream(new FileInputStream(downLoadPath));  
        //输出流
        bos = new BufferedOutputStream(response.getOutputStream());  
        byte[] buff = new byte[2048];  
        int bytesRead;  
        while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {  
            bos.write(buff, 0, bytesRead);  
        }  
        //关闭流
        bis.close();  
        bos.close();  
    }  
	 
}  

 

5、jsp页面代码 注意:设置表单中form表单的属性为:enctype="multipart/form-data"

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>


	<form action="upload.do" method="post" enctype="multipart/form-data">
	
		<input type="text" name="name" />
		<br>
		<input type="file" name="file">
		<br>
		<input type="file" name="file" />
		
		<input type="submit" value="提交">
	</form>


</body>
</html>

 

分享到:
评论
1 楼 lvwei0624 2014-10-16  
.

相关推荐

    SpringMVC文件上传与下载 源码

    在SpringMVC框架中,文件上传与下载是常见的功能需求,尤其在开发Web应用时,用户可能需要上传图片、文档等文件,或者从服务器下载资源。本教程将深入讲解SpringMVC如何处理文件上传和下载操作,并通过源码分析来...

    SpringMVC 文件上传下载

    总结,这个"SpringMVC 文件上传下载"的demo提供了关于如何在SpringMVC环境中处理文件上传和下载的实例。它涵盖了从接收文件、保存文件到发送文件给客户端的完整流程,并允许开发者自定义存储路径或使用虚拟路径。...

    SpringMVC文件上传下载

    SpringMVC文件上传下载 @Controller @RequestMapping(value="/file") public class FileController { @Resource private User user; @RequestMapping(value="/toUpload") public String toUpload(){ return...

    SpringMvc 文件上传下载

    安全性和性能优化也是实现文件上传下载时需要考虑的重要方面。例如,限制文件大小以防止DoS攻击,检查文件类型以防止恶意文件上传,以及使用异步处理以提高上传性能。同时,使用合适的缓存策略可以优化下载速度。 ...

    springmvc 文件上传下载

    在Spring MVC框架中,文件上传和下载是常见的功能需求,特别是在Web应用中处理用户的数据交互。Spring MVC提供了灵活且强大的支持来实现这些操作。本文将详细介绍如何使用Spring MVC 3的注解方式来实现文件上传与...

    JavaEE企业级开发-----SpringMVC实现 文件的上传下载实验报告.docx

    JavaEE企业级开发-----SpringMVC实现 文件的上传下载实验报告

    IDEA SpringMVC 实现文件的上传下载

    在开发过程中,可以通过其内置的Tomcat或Jetty服务器运行和测试项目,查看文件上传下载的效果。 综上所述,本项目通过IDEA和SpringMVC实现了文件的上传和下载功能,涵盖了文件操作、HTTP响应、MultipartFile处理等...

    基于springmvc实现文件上传下载 基于AOP的日志功能

    基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于...

    SpringMVC文件上传,多文件上传实例

    在这个“SpringMVC文件上传,多文件上传实例”中,我们将深入探讨如何在SpringMVC环境中实现文件上传功能,包括单个文件上传以及多个文件的批量上传。 1. **文件上传原理**: 文件上传是通过HTTP协议的POST请求来...

    SpringMVC文件上传下载分页拦截器

    在Spring MVC中,文件上传和...在"Springmvc上传下载分页拦截器"项目中,开发者将这些知识点综合运用,实现了高效、安全且易用的功能。通过学习和实践该项目,我们可以提升对Spring MVC及其相关技术的理解和应用能力。

    SpringMVC文件上传Demo代码

    这个"SpringMVC文件上传Demo代码"是一个实例,演示了如何配置和使用SpringMVC来实现这一功能。 首先,我们需要在SpringMVC的配置文件(如`servlet-context.xml`)中启用多部分支持。这通常涉及到注册一个`...

    springMVC文件上传demo(亲测有效)

    本示例是一个完整的SpringMVC文件上传的Demo,具有实用性,且经过测试有效。下面将详细介绍这个Demo的实现原理和关键知识点。 1. **文件上传组件** SpringMVC利用`CommonsMultipartResolver`来处理文件上传请求。...

    springMVC文件上传所需jar包

    以上就是关于SpringMVC文件上传所需jar包的相关知识,这两个jar文件是实现文件上传功能的关键组件。使用它们,开发者可以方便地处理用户的文件上传请求,确保数据的安全传输和存储。在实际项目中,还需要注意文件...

    springMvc单文件多文件上传

    springMvc 文件上传,springMvc 支持单文件和多文件上传,

    springmvc ajax 文件上传下载文件 multiple

    在这个场景中,"springmvc ajax 文件上传下载文件 multiple" 涉及到的关键知识点包括: 1. **Spring MVC中的文件上传**: - Spring MVC通过`@RequestParam("file") MultipartFile file`注解来接收上传的文件。`...

    SpringMVC文件上传和下载的工具类(完整项目)

    本文主要目的是记录自己基于SpringMVC实现的文件上传和下载的工具类的编写,代码经过测试可以直接运行在以后的项目中。开发的主要思路是对上传和下载文件进行抽象,把上传和下载的核心功能抽取出来分装成类。

    springmvc文件上传与下载jar和案例

    在Spring MVC框架中,文件上传和下载是常见的功能需求,特别是在构建Web应用程序时。下面将详细阐述Spring MVC中实现文件上传和下载的关键知识点,并提供相关的jar包和案例资源。 一、文件上传 1. **依赖引入**:...

    springmvc上传文件controller,vue

    在Spring MVC框架中,文件上传是一项常见的功能,用于接收客户端发送的文件数据。Vue.js作为一个前端框架,可以很好地与Spring MVC结合,实现用户界面的交互和文件上传的处理。在这个项目中,我们将深入探讨如何使用...

    springMVC 与文件 上传 下载 实例

    在Spring MVC框架中,文件上传和下载是常见的需求,尤其在构建Web应用程序时。下面将详细阐述如何使用Spring MVC实现这些功能,以及如何添加文件压缩的特性。 首先,我们需要了解Spring MVC中的MultipartFile接口,...

    springmvc带进度条上传源码

    在提供的"springmvc带进度条上传源码"中,可能包含了这些功能的实现,包括控制器、服务层、视图层以及前端的HTML、CSS和JavaScript文件。分析这些源码可以帮助你更好地理解文件上传和进度条显示的完整流程。如果你...

Global site tag (gtag.js) - Google Analytics