Javascript 从JavaServlet下载文件
我有一个名为DownloadFile的Javaservlet,在Get方法中,我有一些代码可以从数据库中获取一个文件,并在导航到url时将其下载Javascript 从JavaServlet下载文件,javascript,java,servlets,Javascript,Java,Servlets,我有一个名为DownloadFile的Javaservlet,在Get方法中,我有一些代码可以从数据库中获取一个文件,并在导航到url时将其下载 localhost:9080/myapp/DownloadFile 但是我不想把我的用户发送到这个页面去下载文件,所以在我的javascript中点击一个按钮我就有了这个 $scope.downloadTemplate = function(){ console.log("download template called"); $.
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可以使用它喜欢的任何方式,但它不会触发浏览器中的下载 当浏览器发送(整页)请求并接收到指示响应包含文件而不是网站的标题时,将显示下载对话框
如果您不想直接链接到文件,通常的方法是让Javascript将整个选项卡重定向到文件的URL,类似于
window.location.href=http://example.com/myfile';
“不下载”表示其内容未通过console.log(responseText)
命令在控制台中打印?请记住,您不能使用AJAX下载文件,您需要一个常规的请求/页面重定向。@JiriTousek我确实看到它打印在控制台中,但该文件不会下载到我的文件系统。那么我需要什么类型的请求呢?为什么你不能用一个可能重复的:,