springmvc 文件下载实现

方式一: 使用Spring封装类ResponseEntity类来完成。java

public ResponseEntity<byte[]> download(Attachment attachment,
			HttpServletRequest request, HttpServletResponse response)
			throws IOException {
		String filePath = attachment.getFilePath();
		String fileName = attachment.getNackName();
                //fileName = new String(fileName.getBytes("iso-8859-1"), "UTF-8");
                //不是utf-8项目,记得转码。
		File file = new File(Global.getUserfilesBaseDir() + filePath + "/"
				+ fileName);
		HttpHeaders headers = new HttpHeaders();
		headers.setContentDispositionFormData("attachment",
				URLEncoder.encode(attachment.getFileName(), "UTF-8"));
                //URLEncoder转码,下载时文件名才能为中文
		headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
		return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),
				headers, HttpStatus.OK);
	}

在spring-mvc.xml配置文件中添加返回值类型编码。web

<bean
	class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
	<property name="messageConverters">
		 <list>  
			<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>  
			<bean
				class="org.springframework.http.converter.StringHttpMessageConverter">
				<property name="supportedMediaTypes" value="application/json; charset=UTF-8" />
			</bean>
		 </list>  
	</property>
</bean>