我从Angular调用Web服务
return $http.post(url_base 'appointment/export/', filter)
.then(handleSuccessHeaders, handleError('Error exporting file'));
function handleSuccessHeaders(data, status, headers, config) {
var res = {data:data, status:status, headers:headers,config:config};
return res;
}
这些服务用于导出Excel文件,如果我使用客户端我无法下载文件(我看到标题),但我需要标题,因为我需要重要信息,但始终未定义。
这是服务定义
@POST
@Path("/export/")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_OCTET_STREAM})
public Response exportInformation(AppointmentFilterDTO filter) {
String pathFile = "/home/files/test.xlsx"
File file = new File(pathFile);
if (file.exists()) {
java.nio.file.Path path = file.toPath();
return Response
.ok(new OutputStreamImplementation(path), MediaType.APPLICATION_OCTET_STREAM)
.header("content-disposition", "attachment; filename =" + path.getFileName().toString())
.header("Content-Length", file.length())
.header("success", true)
.header("contentType", "application/vnd.ms-excel")
.build();
} else {
return Response.ok()
.header("success", false)
.build();
}
}
所以我不知道我做错了什么,或者我错过了什么,我尝试从data.headers()获取标题,但它也不起作用
答案 0 :(得分:0)
最后,在尝试了很多事情之后,我意识到错误不在Angular方面,我只是暴露了我希望在使用Access-Control-Expose-Headers消费Web服务时可见的自定义标头,因为我&#39 ;我使用CORS,我只需要在conf类中添加它们:
corsFilter.setExposedHeaders("header1,header2,header3");
我还在服务调用中使用了一个参数。