spring mvc如何下载文件呢?
spring mvc怎么下载图片呢?
有两种方式:
方式一:使用注解@ResponseBody
@ResponseBody @RequestMapping(value = "/download",produces="image/jpeg") public byte[] downloadFile(HttpServletRequest request, HttpServletResponse response,String contentType2,boolean isInline) throws IOException { byte[]bytes=FileUtils.getBytes4File("D:\\Temp\\cc.jpg"); // response.addHeader("Content-Disposition", downloadType+";filename=\"a.jpg\""); WebServletUtil.setDownloadContentDisposition(isInline, "c.jpg", response); return bytes; }
WebServletUtil.setDownloadContentDisposition 的实现如下:
/*** * spring MVC下载文件设置的Content-Disposition * @param isInline * @param fileName * @return */ public static String getContentDisposition(boolean isInline,String fileName){ String downloadType=null; if(isInline){ downloadType=Constant2.CONTENT_DISPOSITION_INLINE; }else{ downloadType=Constant2.CONTENT_DISPOSITION_ATTACHMENT; } if(ValueWidget.isNullOrEmpty(fileName)){ fileName="name_not_specified"; } String format=downloadType+";filename=\""+fileName+"\""; return format; } /*** * 下载文件(或内联显示)时设置Content-Disposition * @param isInline * @param fileName * @param response */ public static void setDownloadContentDisposition(boolean isInline,String fileName, HttpServletResponse response){ response.addHeader(Constant2.CONTENT_DISPOSITION, WebServletUtil.getContentDisposition(isInline, fileName)); }
注意:(1)一定要通过@RequestMapping注解的produces 设置response 的content type;
(2)设置应答头时要使用addHeader,而不是setHeader
方式二:使用ResponseEntity
@RequestMapping(value = "/download3") public ResponseEntity<byte[]> download() throws IOException { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.IMAGE_JPEG); // headers.setContentDispositionFormData("inline", "dict.jpg");//attachment headers.set(Constant2.CONTENT_DISPOSITION,WebServletUtil.getContentDisposition(true, "dict.jpg")); return new ResponseEntity<byte[]>(FileUtils.getBytes4File("D:\\Temp\\cc.jpg"), headers, HttpStatus.CREATED); }
/*** * favicon.ico * @throws IOException */ @RequestMapping(value = "/favicon.ico") public ResponseEntity<byte[]> faviconIco(HttpServletRequest request) throws IOException { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.IMAGE_PNG); String faviconIcoName="sms-4.ico"; headers.set(Constant2.CONTENT_DISPOSITION,WebServletUtil.getContentDisposition(true, faviconIcoName)); ///home/whuang/software/apache-tomcat-7.0.53/webapps/ROOT/ String webappPath=null; if(WebServletUtil.isLocalIp(request)){//服务器在本机(访问ip为127或localhost) webappPath=WebServletUtil.getRealPath(request); }else{ webappPath=DictionaryParam.get(Constant2.DICTIONARY_GROUP_GLOBAL_SETTING, "WEB-INF_LOC"); } return new ResponseEntity<byte[]>(FileUtils.getBytes4File( webappPath +"WEB-INF/static/img/"+faviconIcoName), headers, HttpStatus.CREATED); }
注意:不要使用headers.setContentDispositionFormData 来设置Content-Disposition
相关推荐
本书共计10章,分别介绍了快速搭建Spring Web应用、精通MVC结构、URL映射、文件上传与错误处理、创建Restful应用、保护应用、单元测试与验收测试、优化请求、将Web应用部署到云等内容,循序渐进地讲解了Spring MVC4...
这个压缩包文件"Spring MVC 文件上传下载 后端 - Java.zip"包含的文档可能详细阐述了如何在Java后端实现这些功能。以下是关于Spring MVC中文件上传和下载的关键知识点: 1. **Spring MVC 框架**:Spring MVC是...
而`spring-framework-2.5.6-with-docs.zip`可能包含了Spring 2.5.6的源码和文档,帮助开发者了解Spring MVC的内部实现和最佳实践。 总之,这个压缩包提供了开发基于Spring MVC和Hibernate的Java Web应用所需要的...
Spring MVC是Spring框架的一个核心模块,专为构建Web应用程序提供模型-视图-控制器(MVC)架构。在Spring MVC 4.0版本中,它引入了许多改进和新特性,以提升开发效率和应用程序的性能。 1. **依赖注入**:Spring ...
- **Servlet 3.0 下的 MultipartResolver**:对于 Servlet 3.0 及以上版本,Spring MVC 提供了内置的文件上传支持。 - **处理表单中的文件上传**:通过控制器方法来接收和处理上传的文件。 #### 异常处理 ...
这个官方中文文档详细地介绍了如何使用 Spring MVC 来开发高效、可维护的 MVC(Model-View-Controller)架构的应用。Spring MVC 提供了丰富的功能,包括请求处理、视图解析、数据绑定、异常处理等,旨在简化 Web ...
Spring MVC提供了方便的文件上传和下载功能,开发者可以通过简单的API来实现复杂的文件操作。 **6. 异常处理** 通过自定义异常处理器,Spring MVC允许优雅地处理运行时异常,提供了统一的错误页面和异常信息。 **7...
Spring MVC 是一个基于Java的轻量级Web应用框架,它是Spring框架的重要组成部分,主要...在提供的文档"spring MVC .docx"中,应该包含了关于这些知识点的详细解释和示例代码,帮助读者更好地理解和应用Spring MVC框架。
在本压缩包中包含了一系列与Spring MVC相关的jar文件,这些文件是构建和运行Spring MVC项目所必需的依赖。 首先,`hibernate3.jar` 是Hibernate ORM框架的库,它允许开发者将Java对象映射到关系数据库,提供了数据...
Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建模型-视图-控制器(Model-View-Controller)架构的应用程序提供了强有力的支持。这个简易的Spring MVC demo包含了一系列关键知识点,对于初学者来说是很好的...
在 Spring MVC 中, jsp 文件中尽量不要有 Java 代码, 只有 HTML 代码和"迭代(forEach)"与"判断(if)"两个jstl标签. jsp 文件只作为渲染(或称为视图 View)模板使用. 好了, 我们开始吧. 首先我们需要一个放在 WEB-INF...
6. **Apache Commons**:Spring MVC 开发中可能会用到 Apache Commons 的一些工具库,例如 `commons-logging.jar` 用于日志记录,`commons-fileupload.jar` 用于文件上传,`commons-lang3.jar` 提供了一些实用的 ...
配置Spring MVC通常涉及web.xml文件中的DispatcherServlet配置,以及Spring配置文件中定义的Controller、ViewResolver和其他组件。Spring Boot简化了这一过程,通过自动配置和@SpringBootApplication注解可以快速...
Spring MVC简单易用,可以快速提高开发效率,且性能优秀,社区活跃,文档丰富。由于支持注解配置,使得框架更加易用。相较于Struts2,Spring MVC避免了一些可能导致性能下降的特性,如值栈、OGNL表达式等。 二、...
这篇文档详细地介绍了Spring MVC的功能、工作原理以及如何将其有效地应用于实际项目中。Spring MVC的设计目标是提供一种简洁、可测试且灵活的方式来处理HTTP请求,并将这些请求映射到业务逻辑上,然后将结果呈现给...
通过下载提供的Spring MVC依赖包,你可以快速开始构建自己的Spring MVC项目,享受到Spring框架带来的强大功能和灵活性。记得正确配置项目结构,以及在pom.xml或build.gradle文件中引入所需的依赖,确保项目的顺利...
- 在Spring MVC配置文件中声明处理器映射器、视图解析器、以及自定义的控制器等。 4. **创建简单示例** 在这个"Spring MVC 简单Demo"中,我们可能有一个名为`SummerWeb`的目录,其中包含以下文件: - `web.xml`...
总的来说,实现Spring MVC文件上传的进度条功能需要前端和后端的紧密配合。前端负责用户交互和进度信息的显示,后端则需处理分块上传、进度跟踪和异步响应。通过这样的方式,我们可以在不阻塞用户界面的情况下,提供...