我正在尝试使用Java Restful服务和angularjs打开保存在服务器中的PDF文件。 我在Java中的服务代码是:
@GET
@Path("/getPDF")
@Produces("application/pdf")
public Response getPDF() throws FileNotFoundException {
File file = new File("/path/to/file.pdf");
FileInputStream fileInputStream;
fileInputStream = new FileInputStream(file);
long contentLength = file.length();
ResponseBuilder responseBuilder = Response.ok((Object) fileInputStream);
responseBuilder.type("application/pdf");
responseBuilder.header("Content-Disposition", "inline; filename=file.pdf");
responseBuilder.header("Content-Length", contentLength);
responseBuilder.header("charset", "utf-8");
return responseBuilder.build();
}
返回Response后,我使用angularjs处理请求:
MyJavaService.getPDF().success(function(data){
var file = new Blob([data], {type: 'application/pdf'});
var fileURL = URL.createObjectURL(file);
$window.open(fileURL);
});
结果是打开一个新窗口,页面数量与PDF文件相同(正确),但内容不显示,所有页面都是白色(不正确)。
有没有人知道我做错了什么?
答案 0 :(得分:2)
我假设您正在使用$ http.get()调用。
你可能有以下几点:
$http.get(<URL>, {params: <stuff>})
你需要告诉angular,responseType是一个arrayBuffer,如下所示:
$http.get(<URL>, {responseType: 'arraybuffer', params: <stuff>})
不要犹豫告诉我我的假设是不正确的。
p.s。:尽量避免使用.success()而是使用.then()。前者被弃用1.4+并在1.6 +
中完全删除