首页 新闻 会员 周边 捐助

jQuery以Post方式发送请求并获取返回的文件供下载!

0
悬赏园豆:10 [待解决问题]

我的想法是这样的,在页面上用jQuery的$.post方法发送一个请求给服务器(由于要传递的参数是经过Base64编码的很长的字符串,所以使用Post方式),然后服务器根据这个参数再生成相应的一个文件流返回给客户端。此时,问题来了,在$.post方法的回调函数中,只能处理xml, json, script, or html类型,对返回的文件流却没办法弹出对话框让用户下载了。

大家有没有什么方法可以让浏览器弹出下载对话框来让用户下载这个文件呢?或者有替代方法也可以给个思路,谢谢!

唐岗的主页 唐岗 | 初学一级 | 园豆:176
提问于:2014-06-24 14:22
< >
分享
所有回答(2)
0

试试先将生成的文件保存到download文件夹中,post只返回一个文件路径,浏览器这边显示再有文件链接的标签让用户点击下载.

贪心狸猫 | 园豆:872 (小虾三级) | 2014-06-24 14:58
0
$.ajax({
                    url: window.GlobalObject.rootPath + '/Common/ExportExcelFile',
                    data: JSON2.stringify(opts),
                    contentType: 'application/json',
                    type: 'post',
                    dataType: 'json'
                }).done(function (data) {
                    var href = window.GlobalObject.rootPath + '/Common/DownloadExcelFile?name=' + data.DownloadName + '&path=' + data.FilePath;
                    var $iframe = $('#iframeForExport');
                    if ($iframe.length == 0) {
                        $iframe = $('<iframe id="iframeForExport" style="display:none;" />');
                        $('body').append($iframe);
                    }
                    $iframe.attr('src', href);
                });

类似的实现
幻天芒 | 园豆:37207 (高人七级) | 2014-06-24 15:54

但是我的文件是在远程服务上啊?你获取到的路径没法直接访问服务器文件的。

支持(0) 反对(0) 唐岗 | 园豆:176 (初学一级) | 2014-11-25 16:12

data就是你远程服务器返回回来的文件链接啊~

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2014-11-25 17:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册