在 Spring MVC 中以 AJAX 响应发送文件

Posted

技术标签:

【中文标题】在 Spring MVC 中以 AJAX 响应发送文件【英文标题】:Sending file in AJAX response in spring MVC 【发布时间】:2015-08-27 03:06:16 【问题描述】:

我正在根据来自客户端的请求在服务器上创建一个文件。现在,我想发送该文件以响应 AJAX 响应。下面是JAVA代码。

response.reset();
            response.setContentType("application/pdf"); 
            response.setHeader("Content-disposition", "attachment; filename=\"Portfolio.pdf\""); 
            OutputStream output;
            try 
                output = response.getOutputStream();
                output.write(Util.readFileInBytes("/Portfolio.pdf"));
                output.close();
             catch (IOException e) 
                e.printStackTrace();
            

现在,如何向用户显示“另存为”对话框以保存文件。提前感谢您的帮助。javascript代码如下:

$.ajax(
            url : "export",
            dataType : 'text',
            contentType : 'application/pdf',
            success: function()  //code to display "Save As" dialog box to user.);

【问题讨论】:

见***.com/questions/12876000/… 感谢您的帮助。我实现了上述 URL 中给出的解决方案。但是,它正在创建一个里面什么都没有的新窗口。新窗口是空白的。 "它正在创建一个里面什么都没有的新窗口。新窗口是空白的。" 可以创建stacksn-ps,jsfiddle.net来演示吗?另见***.com/questions/28207106/pdf-file-upload-ajax-html、***.com/a/23987178。 【参考方案1】:

另请参阅此讨论***.com/questions/833068/how-to-force-save-as-dialog-box-in-firefox-besides-changing-headers。

您可以将文件编码为 base64 字符串,将其发送到客户端,然后将值分配给 location.href,保存对话框将显示给用户。

但它在 IE 中不起作用。不知道你有什么要求。

【讨论】:

以上是关于在 Spring MVC 中以 AJAX 响应发送文件的主要内容,如果未能解决你的问题,请参考以下文章

spring mvc ajax success不执行 反倒执行error

如何从 Spring MVC 控制器返回对象以响应 AJAX 请求?

通过 POST (ajax) 发送 JSON 数据并从 Controller (MVC) 接收 json 响应

如何在spring mvc中的操作之前发送响应

Spring mvc +ajax 发送邮件

如何在 ASP.NET MVC 中以 JSON 格式返回 500 错误?