2013-07-09 33 views
0

我正在重写一些用于使用GET的代码并将其替换为POST。使用JQuery POST发送文件下载请求

曾经是一个GET请求的URL下载到

https://myurl/getfile?fileid=1234&filetype=pdf 

现在,我改变了对

https://myurl/getfile 

,并把fileid=1234&filetype=pdf在POST体。

function postCall(url, param) { 
    $.post(url, param); 
} 

服务器端是用Java编写的,我试图重新使用GET旧代码,写文件的二进制成servlet的流:

因为我这样做是使用jQuery的POST方法。

但是,我的浏览器不会提示用户下载,用于GET。

以前的帖子在stackoverflow确实表明AJAX不应该用于文件下载。但是我有什么替代方法?该请求不是由表单生成的。

非常感谢。

+0

我不知道java,但基本上你必须把文件字节放在响应中,然后将content-type设置为相应的文件结尾。希望这有帮助 –

+0

你能否显示服务器端代码中的相关部分? – mthmulders

回答

0

我会建议在页面上创建一个表单(或者使用jQuery动态创建一个表单),然后让表单做表单提交(在表单中使用jQuery的“submit”函数或“trigger('submit')”) )。这样请求将不会在后台异步完成。如果“getfile”脚本使用Content-disposition:attachment附件进行响应,则应该下载。这就是说,我不确定浏览器会在这种情况下“提示”用户 - 这取决于浏览器(无论是否出现对话框来保存下载,或者它是否自动下载文件没有提示)。

+0

谢谢安迪。听起来像一个解决方案。我会试试这个。 – Kevin