gpt4 book ai didi

javascript - 从 Java Servlet 下载文件

转载 作者:行者123 更新时间:2023-11-30 07:00:25 28 4
gpt4 key购买 nike

我有一个名为 DownloadFile 的 java servlet,在 Get 方法中我有一些代码,可以从数据库获取文件并在导航到 url 时下载它

localhost:9080/myapp/DownloadFile 

但我不想将我的用户发送到此页面来下载文件,因此在我的 javascript 中单击按钮我有这个

$scope.downloadTemplate = function(){
console.log("download template called");
$.get("DownloadTemplate", function(responseText) {
console.log(responseText)
});
}

函数被调用,servlet 被调用,但文件没有下载。为什么?这是相关的servlet代码

bytes = templateSet.getBytes("FILE");
fileName = templateSet.getString("TEMPLATE_FILE_NAME");

response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition",
"attachment;filename=" + fileName);

ServletOutputStream out = response.getOutputStream();
out.write(bytes);
out.flush();
out.close();

如何下​​载文件并使用户停留在下载按钮所在的页面?

谢谢

最佳答案

您无法使用 AJAX 下载文件。

如果您执行 AJAX,您将在提供的回调中获得响应。您的 Javascript 可以以任何方式使用它,但它不会触发浏览器中的下载。

浏览器在发送(全页)请求并收到指示响应包含文件而不是网站的 header 时显示下载对话框。

如果您不想直接链接到文件,通常的方法是让 Javascript 将整个选项卡重定向到文件的 URL,例如 window.location.href = 'http ://example.com/myfile';.

关于javascript - 从 Java Servlet 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41026824/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com