java - "Content-Disposition"和 AngularJS header 中的文件名

标签 java angularjs web-services rest

我使用 angularjs 1.3.14

我有一个 java REST 服务生成一个带有以下 header 的 xml 文件:“Content-Disposition”,“attachment; filename=yourFileName”;

我需要在 AngularJS 上获取具有我的文件名的文件。

我有这个代码:

$http.get('/someUrl').success(function(data, status, headers){
var myHeaders = headers();
...
});

但在 myHeaders 中只有 {content-type="application/xml"}。 我需要找到“Content-Disposition”、“attachment; filename=yourFileName”

Java 服务:

@GET
@Path(EXPORT_URL)
@Produces(MediaType.APPLICATION_XML)
public Response export(@Context HttpServletRequest request) {
    String userName = request.getRemoteUser();
    if (userName != null) {
        ...
        ResponseBuilder response = Response.ok(myObject);
        response.header("Content-Disposition", "attachment; filename=myFile.xml");
        return response.build();
    } else {
        return Response.status(Status.FORBIDDEN).build();
    }
}

最佳答案

2年后,我找到了解决方案:

@RequestMapping(value = "/export", method = RequestMethod.GET, produces = MediaType.APPLICATION_XML)
public ResponseEntity<String> export(...

HttpHeaders headers = new HttpHeaders();
headers.setAccessControlExposeHeaders(Collections.singletonList("Content-Disposition"));
headers.set("Content-Disposition", "attachment; filename=" + filename);
return new ResponseEntity<>(exportedContent, headers, HttpStatus.OK);

关于java - "Content-Disposition"和 AngularJS header 中的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32314827/

相关文章:

java - 我可以创建组合框类型的列表吗?

java - 如何在 Android Studio 中设置 Gradle Wrapper

javascript - Angular Forms - 如何使用动态名称注册输入?

.net - 如何添加重试以调用 Web 服务?

Python前夕:- Blocking POST Method and Enabling PUT Method for some endpoints in Python EVE

c# - 跨多个 Web 服务重用类型

java - 带有 Tomcat 和 ContextLoaderListener 的 PropertyPlaceholderConfigurer

java - 无法访问类字段

javascript - 使用 ng-if 时 $scope 不会更新

javascript - AngularJS UI-选择作为组合框