当前位置: 首页 > 面试题库 >

如何使用Servlet发送PDF文件数据作为响应?

易嘉胜
2023-03-14
问题内容

我的要求是使用HTTP Servlet将PDF数据响应到移动客户端(iPhone)。

我是按照以下方式完成的,但是我没有在客户端获得预期的输出。

    PrintWriter out = response.getWriter();

    String aInputFileName = "/Users/hcl/Desktop/Easwar/sample.pdf";
        log("Reading in binary file named : " + aInputFileName);
        File file = new File(aInputFileName);
        log("File size: " + file.length());
        byte[] result = new byte[(int)file.length()];
        System.out.println("Length : "+  result.length);
        try {
          InputStream input = null;
          try {
            int totalBytesRead = 0;
            input = new BufferedInputStream(new FileInputStream(file));
            while(totalBytesRead < result.length){
              int bytesRemaining = result.length - totalBytesRead;
              //input.read() returns -1, 0, or more :
              int bytesRead = input.read(result, totalBytesRead, bytesRemaining); 
              if (bytesRead > 0){
                totalBytesRead = totalBytesRead + bytesRead;
              }
            }
        response.setHeader("Content-Type", "application/pdf");

        out.println(result);

我遵循的方法正确吗?请指教。

谢谢。


问题答案:

您必须使用ServletOutputStream及其write()方法将字节写入response。



 类似资料:
  • 我正在尝试编写一个将图像转换为PDF文件的web应用程序。用户发送两幅图像(JPEG、PNG),并应接收和下载PDF文件。 目前的主要问题是我不知道如何将PDF文件返回给客户端。 这是我的控制器: 这是将图像转换为PDF文件的服务(这里我使用库): 另外,当生成文件以从存储中下载文件时,可以将PDF文件存储在某个位置,并在客户端创建“下载”按钮?

  • 问题内容: Expressjs框架具有sendfile()方法。我如何在不使用整个框架的情况下做到这一点。我正在使用node-native- zip创建档案,并将其发送给用户。 问题答案: 这是一个示例程序,它将通过从磁盘流式传输myfile.mp3来发送myfile.mp3(也就是说,在发送文件之前,它不会将整个文件读入内存)。服务器在端口2000上侦听。 [更新] 正如@Aftershock在

  • 我有一个场景,其中各种JSP击中同一个servlet。对于该servlet有一个过滤器,用于检查托运。基于这种情况,必须将响应从请求发出的地方发送回jsp。不管发送请求的源是什么,servlet都必须执行相同的功能。如何编写通用代码将响应重定向回源JSP。

  • Expressjs框架有一个方法。如果不使用整个框架,我怎么能做到这一点? 我正在使用node-native-zip创建一个归档文件,并希望将其发送给用户。

  • 有人能告诉我如何从Java中的HTTP触发器Azure函数发送pdf响应吗。 一旦该功能被触发,我需要从Azure存储中读取pdf,并将pdf作为响应返回到浏览器。

  • 我如何发送表单数据作为‘文本’通过放心,请参阅截图。当我使用request.multipart(“key”.“value”)时,请求是作为文件发送的(参考屏幕截图)。蒂娅。