无法通过 Servlet 下载从 BLOB 检索的 PDF

我环顾四周并尝试了一些我看到的解决方案,但似乎没有任何效果。


所以这是我的情况:


我有一个 PDF 文件作为 BLOB 存储在我的 oracle 数据库中。在我的后端,我调用我的服务以下载该 pdf(在我的实体中,pdf 是 a byte[]),如下所示:


@GET

@Path("/downloadpdf")

@Produces("application/pdf")

public HttpServletResponse downloadPdf(@Context HttpServletRequest request, @Context HttpServletResponse response) {

    try {

        UserGuideJpaService userGuideService = new UserGuideJpaServiceImpl();

        HashMap<String, Object> result = userGuideService.getPdfGuide();

        if ("0".equals(result.get("returnCode"))) {

            UserGuide userGuide = (userGuide) result.get("userGuide");

            response.setHeader("Pragma", "no-cache");

            response.setHeader("Cache-control", "private");

            response.setDateHeader("Expires", 0);

            response.setContentType("application/pdf");

            response.setHeader("Content-Disposition", "attachment; filename=\"APP - User Guide.pdf\"");


            byte[] pdf = userGuide.getPdf();


            if (pdf != null) {

                response.setContentLength(pdf.length);

                ServletOutputStream out = response.getOutputStream();

                out.write(pdf);

                out.flush();

                out.close();

            }

        }

    } catch (Exception e) {

        e.printStackTrace();

    }

    return response;

}

回到我的前端,我有这个:


注意:这就是我的response.data样子(它是一个字符串):


%PDF-1.4 %


8 0 obj << /Type /Page /Resources << /ProcSet [ /PDF /Text ] /Font 4 0 R /Shading 6 0 R /ExtGState 7 0 R


/MediaBox [0 0 595.28 864.00] /Contents 9 0 R /Parent 10 0 R >> endobj

但是,这不会下载文件,甚至不会打开它。


而且我很确定 pdf 在后端是正确的,因为我在使用时设法得到它:


    OutputStream out = new FileOutputStream("Test.pdf");

    out.write(pdf);

    out.close();

我怎样才能从我的浏览器下载 pdf 格式?或者至少打开它?


慕容森
浏览 181回答 1
1回答

饮歌长啸

默认情况下,ajax 请求将您的响应视为文本,这会导致非文本文件出现问题。为了防止这种情况在您的请求中添加一个二进制 responseType,例如({&nbsp; downloadPdf: function() {&nbsp; &nbsp; return $http({&nbsp; &nbsp; &nbsp; method: 'GET',&nbsp; &nbsp; &nbsp; url: this.baseUrl + "/downloadpdf",&nbsp; &nbsp; &nbsp; responseType: "blob"&nbsp; &nbsp; });&nbsp; }});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java