`

springMVC实现下载文件

阅读更多
1、前台代码
<a href="javascript:void(0);" ng-click="exportFile()" title="导出"><i class="icon-download-alt"></i></a>

$scope.exportFile = function() {
    	var temp ={};
        temp.path = "aaa/bbb.txt"
        $http({
            url: contextPath+'/conf/download',
            method: "POST",
            data: JSON.stringify(temp),
            cache: false
        }).success(function(data, status, headers) {
            var octetStreamMime = 'application/octet-stream';
            // Get the headers
            headers = headers();
 
            // Determine the content type from the header or default to "application/octet-stream"
            var contentType = headers['content-type'] || octetStreamMime;


            try
            {
                // Try using msSaveBlob if supported
                console.log("Trying saveBlob method ...");
                var blob = new Blob([data], {type: contentType});
                saveAs(blob, "filename.txt");//这里文件名写死了,可换成需要的文件名
            } catch(ex)
            {
                console.log("saveBlob method failed with the following exception:");
                console.log(ex);
            }
        });
    };

前端使用angularJS、FileSaver.js [url] https://github.com/eligrey/FileSaver.js [/url]

2、后台代码
@RequestMapping(method = RequestMethod.POST,value="/conf/download")
    public ResponseEntity<byte[]> download(@RequestBody Map<String,Object> params){
    	
    	String path = (String)params.get("path");
    	
    	File file = mappingService.getFile(path,type);
    	
    	HttpHeaders headers = new HttpHeaders(); 
    	headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); 
    	headers.setContentDispositionFormData("attachment",path);
    	return new ResponseEntity<byte[]>(RequestUtil.getBytesFromFile(file),headers,HttpStatus.CREATED);
    }

3、配置文件
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
<!--byte数组传输文件-->
                <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
                <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
                <bean class = "org.springframework.http.converter.StringHttpMessageConverter">   
                    <property name = "supportedMediaTypes">
                        <list>
                            <value>text/html;charset=UTF-8</value>   
                        </list>   
                    </property>   
                </bean>   
            </list>
        </property>
    </bean>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics