方式一: 使用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>