Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从JavaServlet下载文件_Javascript_Java_Servlets - Fatal编程技术网

Javascript 从JavaServlet下载文件

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"); $.

我有一个名为DownloadFile的Javaservlet,在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可以使用它喜欢的任何方式,但它不会触发浏览器中的下载

当浏览器发送(整页)请求并接收到指示响应包含文件而不是网站的标题时,将显示下载对话框


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

“不下载”表示其内容未通过
console.log(responseText)
命令在控制台中打印?请记住,您不能使用AJAX下载文件,您需要一个常规的请求/页面重定向。@JiriTousek我确实看到它打印在控制台中,但该文件不会下载到我的文件系统。那么我需要什么类型的请求呢?为什么你不能用一个可能重复的:,