我正在重写一些过去使用GET的代码,并将其替换为POST。
下载网址曾是对
的GET请求https://myurl/getfile?fileid=1234&filetype=pdf
现在,我将其更改为
https://myurl/getfile
并将fileid=1234&filetype=pdf
放入POST正文中。
我使用jquery的post方法做到了这一点:
function postCall(url, param) {
$.post(url, param);
}
服务器端是用Java编写的,我试图重用GET的旧代码,它将文件二进制文件写入servlet的流中。
但是,我的浏览器不会提示用户下载,这是以前用于GET的。
stackoverflow上的帖子确实表明AJAX不应该用于文件下载。但是我可以使用哪种替代方式?但请求不是由表单生成的。
非常感谢。
答案 0 :(得分:0)
我建议在页面上创建一个表单(或者使用jQuery动态创建一个表单),然后让该表单进行帖子提交(在表单上使用jQuery的“submit”函数或“trigger('submit')”) 。这样,请求将不会在后台异步完成。如果“getfile”脚本响应带有Content-disposition:attachment的文件,则应该下载。
那就是说,我不确定浏览器会在这种情况下“提示”用户 - 这取决于浏览器(是否出现保存下载的对话框,或者是否自动下载文件提示)。