我有一个读取二进制文件并将其发送给客户端的 servlet。
byte[] binaryData = FileUtils.readFileToByteArray(path);
response.getWriter().print(new String(binaryData));
它适用于非二进制文件。当我有一个 BINARY 文件时,我得到 receive file length bigger than origin or received file not the same
。如何读取和发送二进制数据?
谢谢。
最佳答案
不是通过Writer
。编写器用于文本 数据,而不是二进制数据。您当前的代码正在尝试使用系统默认编码将任意二进制数据解释为文本。这真是个糟糕的主意。
您需要一个输出流 - 所以使用 response.getOutputStream()
,并将二进制数据写入其中:
response.getOutputStream().write(FileUtils.readFileToByteArray(path));
关于java - 以 byte[] 形式读取二进制文件并以 char[] 形式从 servlet 发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9085760/