在 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 请求?