使用Jersey下载的文件已损坏

时间:2016-11-02 09:27:40

标签: java angularjs jersey

我正在尝试下载Excel(xlsx)文件。该文件是使用SXSSFWorkbook生成的,当我在服务器中打开它时没有任何问题。但是当我在我的角度应用程序中下载它时,该文件已损坏。

这是我的API代码:

@GET
@Path("/{id}/download")
@Produces("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
public Response downloadFile(@PathParam("id") long fileId,) throws Exception {
    File target = getFile(fileId); //Another method which generates the file
    return Response.ok((object)target, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
                   .header("content-disposition","attachment; filename =filename.xlsx")
                   .build();
}

这是我用于下载的Angular代码:

var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
var fileType = response.headers('Content-Type');
var fileBlob = new Blob([response.data], {type: fileType});
var fileName = getFileName(response.headers('Content-Disposition'));
var fileURL = fileUtils.createURL(fileBlob);
a.href = fileURL;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(fileURL);

我目前正在使用Jersey 1.1,Glassfish 3.1.2和Angular 1.4.7。

0 个答案:

没有答案