`
lp895876294
  • 浏览: 285376 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

基于SpringMVC的文件上传和下载

    博客分类:
  • JAVA
 
阅读更多

基于SpringMVC的文件上传和下载总结。

配置:

       在SpringMVC配置文件中引入Spring处理文件上传的Bean,如下:

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    	<property name="defaultEncoding" value="utf-8"></property>
    	<property name="uploadTempDir" value="upload/temp"></property>
    </bean>

 

文件上传:

注意点包括:

       1.文件上传域的表单的属性enctype必须为"multipart/form-data";带有文件域的表单提交后会刷新页面,也可以使用异步文件上传方式,参考->http://lpyyn.iteye.com/admin/blogs/2061960。

        2.使用SpringMVC处理上传,文件上传的request请求类的为MultipartRequest,获取的文件为MultipartFile。其中MultipartFile可以在方法参数中,也可以通过MultipartRequest获取。参考代码如下:

@RequestMapping("upload")
	@ResponseBody
	public String uploadFile(@RequestParam("file") MultipartFile file) throws Exception{
		logger.info("保存文件->"+file.getOriginalFilename()+"  size->"+file.getSize());
        return "ok" ;
	}

 

文件下载:

      文件下载根本上是将文件的内容写入到response的outputStream中,Spring封装了一个ResponseEntity,其中封装了response的操作,但是它对outputStream是只读操作,在创建ResponseEntity时就要将outputStream对象作为参数传入到构造函数中。因此,文件的下载选择直接使用response对象。

使用response对象需要设置返回内容的编码类型、内容类型和附件信息。参考代码如下:

/**
	 * 使用此种格式获取rest地址中文件名称及扩展名
	 * @param fileName
	 * @param format
	 * @param response
	 * @throws Exception
	 */
	@RequestMapping("download/{fileName}.{format}")
	public void downloadFile(@PathVariable(value="fileName") String fileName,
			@PathVariable(value="format") String format,HttpServletResponse response) throws Exception{
		fileName += "."+format ;
		logger.info("下载文件->"+fileName);
		//设置response对象的编码和内容类型
		response.setCharacterEncoding("utf-8");    
        //设置内容编码类型为multipart/form-data(二进制文件上传和下载使用的格式)
        response.setContentType("multipart/form-data");    
        //需要单独设置文件编码格式,只支持ISO8859-1编码格式,使用GBK编码,支持中文,UTF-8不支持中文。
        response.setHeader("Content-Disposition", "attachment;fileName="+new String(fileName.getBytes("GBK"), "ISO8859-1"));
		//直接使用response对象的输出流,避免在系统中创建文件输出流
        fileService.get(response.getOutputStream(),fileName) ;
        //不使用SpringMVC自带的ResponseEntity对象,是因为ResponseEntity的Body是只读对象
	}

 有时候直接向response.getOutputStream()中写东西有可能会失败,可以将ByteArrayOutputStream做为一个中间件,先向ByteArrayOutputStream中写数据,然后再通过response.getOutputStream()输出数据,如下:

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream() ;
			
fileService.get(byteArrayOutputStream , fileName) ;
			
OutputStream outputStream = response.getOutputStream() ;
			
outputStream.write(byteArrayOutputStream.toByteArray()) ;
			
outputStream.flush() ; 
			
outputStream.close() ;
			
byteArrayOutputStream.close() ;

 

分享到:
评论

相关推荐

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

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

    IDEA SpringMVC 实现文件的上传下载

    在这个项目中,我们使用IDEA来构建一个基于SpringMVC的系统,实现了文件的上传和下载功能。下面将详细介绍这个过程中的关键知识点。 1. **SpringMVC框架**: SpringMVC是Spring框架的一个模块,主要用于处理Web...

    基于Springmvc的上传图片并生成缩略图

    总结来说,基于Springmvc的图片上传和生成缩略图功能涉及以下几个关键步骤:配置Springmvc支持文件上传,编写Controller处理上传请求,生成并保存缩略图,以及与前端交互提供反馈。这些步骤都需要对Springmvc、文件I...

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

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

    基于springMVC的文件上传功能

    在Web应用中,文件上传是一项常见的...总结,基于SpringMVC的文件上传功能涉及到环境配置、控制器编写、视图设计、文件存储策略以及安全措施等多个方面。理解并掌握这些知识点,可以构建出稳定、高效的文件上传系统。

    springMVC 与文件 上传 下载 实例

    总的来说,Spring MVC提供了处理文件上传和下载的强大支持,结合Java内置的压缩功能,我们可以轻松地实现文件上传、下载和压缩功能。在实际项目中,需要注意文件安全、性能优化以及异常处理等问题,以确保服务的稳定...

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

    在JavaEE企业级开发中,SpringMVC框架是广泛用于构建Web应用程序的工具,它提供了丰富的功能,包括处理文件上传和下载。本实验报告将详细阐述如何利用SpringMVC实现文件上传与下载的功能。 首先,文件上传的核心...

    SpringMVC框架实现文件的上传和下载

    在SpringMVC框架中,文件的上传和下载是常见的功能需求,主要用于处理用户的数据交互,例如用户上传图片、文档等,或者系统提供文件下载服务。本文将深入探讨如何使用SpringMVC来实现这一功能。 首先,我们需要理解...

    springmvc上传文件controller,vue

    Vue.js作为一个前端框架,可以很好地与Spring MVC结合,实现用户界面的交互和文件上传的处理。在这个项目中,我们将深入探讨如何使用Spring MVC作为后端控制器来处理文件上传,以及Vue.js在前端如何与之配合。 首先...

    SpringMVC文件增删改查(上传、更新、下载、删除)

    在SpringMVC框架中,文件操作是常见的功能需求,包括文件的上传、下载、更新和删除。本项目提供了完整的解决方案,覆盖了这些功能点。以下将详细解释这些知识点。 一、文件上传 在SpringMVC中,文件上传主要依赖于`...

    SpringMVC文件上传下载

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

    SSM整合包 spring+springMVC+Mybatis+bootstarp以及文件上传与下载

    5. **文件上传与下载**:在Web应用中,文件上传和下载是常见的功能需求。SpringMVC提供了一套完整的文件上传API,可以通过MultipartFile接口处理文件上传。文件下载则通常通过HTTP响应头控制,将服务器上的文件流...

    SpringMVC 实现文件上传下载、国际化等

    以上就是SpringMVC实现文件上传、下载和国际化的基本流程。在实际项目中,可能需要根据需求进行更复杂的处理,如文件存储策略、错误处理、多文件上传等。同时,国际化可能涉及到更复杂的逻辑,如用户选择语言、动态...

    springMVC 上传下载例子

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建动态Web应用程序提供了一种模型-视图...以上就是关于"Spring MVC 上传下载例子"的知识点介绍。理解并熟练掌握这些内容,将有助于你构建功能完善的Web应用程序。

    SpringMVC文件上传案例

    这个"SpringMVC文件上传案例"展示了如何在Eclipse开发环境中实现这一过程。下面我们将详细探讨涉及的知识点。 首先,我们需要理解SpringMVC的核心概念。SpringMVC是Spring框架的一部分,它是一个用于构建Web应用的...

    SpringMVC文件上传与下载

    在Spring MVC框架中,文件上传和下载是常见的功能需求,特别是在构建Web应用程序时。这篇博客文章详细介绍了如何在Spring MVC项目中实现这两个操作。以下是对这些知识点的详细说明: 1. **Spring MVC简介** Spring...

    springmvc+hadoop+maven实现文件上传至hdfs

    在本项目中,我们结合了SpringMVC、Hadoop和Maven这三个技术,构建了一个能够实现文件从Web端上传到HDFS(Hadoop Distributed File System)的系统。下面将详细阐述这三个技术及其在项目中的应用。 首先,SpringMVC...

    springmvc 文件上传 controller+jsp代码

    本篇将基于一个简单的示例,来讲解如何使用Spring MVC实现文件上传功能。 #### 二、环境配置与依赖 1. **项目构建**:确保项目是基于Spring MVC框架构建的。 2. **依赖添加**:在项目的pom.xml文件中添加以下依赖...

    springMVC的上传与下载

    在这个主题“springMVC的上传与下载”中,我们将深入探讨如何在 Spring MVC 中实现文件上传和下载功能。 **文件上传** 1. **配置 Spring MVC**: 首先,你需要在 `web.xml` 文件中配置 DispatcherServlet 和 Spring...

    基于SpringMVC的文件上传(兼容IE8)

    一、SpringMVC文件上传基础 1. 配置SpringMVC 在`spring-mvc.xml`配置文件中,我们需要开启MultipartResolver来处理文件上传。通常选择`CommonsMultipartResolver`,因为它依赖于Apache Commons FileUpload库: ``...

Global site tag (gtag.js) - Google Analytics