我正在使用 servlet 并将带有byte[]
流的 http 响应传递给浏览器。我已经response.setContentType("application/pdf");
在我的 java 代码中设置,但它仍然显示垃圾代码,如:JVBERi0xLjQKJeLjz9MKNCAwIG9iago8PC9UeXBlL1hPYmplY3QvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9CaXR
我应该怎么做才能在浏览器中正确查看pdf?
我正在使用 servlet 并将带有byte[]
流的 http 响应传递给浏览器。我已经response.setContentType("application/pdf");
在我的 java 代码中设置,但它仍然显示垃圾代码,如:JVBERi0xLjQKJeLjz9MKNCAwIG9iago8PC9UeXBlL1hPYmplY3QvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9CaXR
我应该怎么做才能在浏览器中正确查看pdf?
PDF 文档很容易被识别,因为它们的第一个字符是 %PDF,后跟一个版本号。
您可以在此处看到显示的内容不遵循该规则,因此不是 PDF。尽管如此,这个字符串看起来很像 Base 64 编码的内容,实际上,如果您要尝试使用 base64 解码器,您会看到解码后的输出打印一个以 开头的文档:
%PDF-1.4
... some binary stuff
因此,似乎缺少的是在通过响应发送内容之前对内容进行解码。为了执行这种解码,Apache Commons Codec 灵活地实现了 Base64 编码和解码,但您也可以使用各种类和实用程序来完成这项工作。请参阅此 SO 线程上的答案: