我希望我的Web服务将数据文件返回给调用者,以便他们可以保存在他们的文件系统中。问题是,它不是显示弹出窗口来保存文件,而是显示在浏览器中。以下代码说明了问题:
@GetMapping(value = "/test", produces = "text/plain")
public void testDownload(HttpServletResponse response, Writer responseWriter) {
try {
for (int i = 0; i < 10; i++) {
responseWriter.write("Hello World, this is row " + i + "\n");
}
responseWriter.flush();
responseWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
response.setContentType("text/txt");
response.setHeader("Content-Disposition", "attachment; filename=HelloWorld.txt");
}
运行此结果会导致返回的十行显示在浏览器中。我假设我在回复中遗漏了一些东西,但我无法弄清楚是什么。上面显示的代码实现了this question关于文件下载的已接受答案(即,使用outputStream,设置ContentType)。这足以将数据返回给调用者,但这不是我的问题。我需要确保它不会显示在浏览器中,而是提示用户保存它。