我正在尝试从我的 Java Spring 项目的资源中读取一个 wav 文件,然后将该文件转换为字节数组并将其写入 HttpResponse 的输出流。当我从我的 Web 应用程序收到文件时,它被垃圾数据破坏了。
这是我的 servlet 中的代码:
response.setContentType("audio/wav");
response.setHeader("Content-Disposition", "attachment;filename=audio-qrcode-"+"hellosine"+".wav");
response.setHeader("Pragma", "private");
response.setHeader("Cache-Control", "private, must-revalidate");
response.setHeader("Accept-Ranges", "bytes")
URL helloSineWav = QRcodeController.class.getClassLoader().getResource("hellosine.wav");
byte[] audioBytes = IOUtils.toByteArray(helloSineWav.openStream());
response.setContentLength(audioBytes.length);
ServletOutputStream outStream = response.getOutputStream();
outStream.write( audioBytes );
outStream.flush();
outStream.close();
我尝试解决的另一种方法是:
ServletOutputStream out = response.getOutputStream();
byte[] buf = new byte[1024];
int len;
while ((len = is.read(buf)) > 0) {
out.write(buf, 0, len);
}
is.close();
out.close();
两种方法都有效,但在另一端给了我一个损坏的音频文件。我不确定为什么会这样。它与标题有关吗?