首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Ajax调用后在JQuery中打开文件下载对话框?

如何在Ajax调用后在JQuery中打开文件下载对话框?
EN

Stack Overflow用户
提问于 2016-05-26 13:49:51
回答 2查看 3.5K关注 0票数 1

使用IE-10/11

我正在下载JQuery格式的文件

代码语言:javascript
复制
Common.ajax({
    dataType: 'text',
    type: 'GET',
    url: link,
    data: {'_CONV_ID': convId},
    success: function (data) {
        alert("File DOwnloaded" + data);
       //How to say Browser to open dialog to open, save cancel the file download
    },
    error: function (result) {
        $.unblockUI();
        $.log(result.responseText);
    }
});

警告消息已成功显示在屏幕上,但未显示保存或打开文件的对话框。有人建议在成功的时候写些什么才能做到这一点吗?

EN

回答 2

Stack Overflow用户

发布于 2016-05-26 13:57:01

试试这个..。

代码语言:javascript
复制
var a = document.createElement('a');
var fileurl=  window.URL.createObjectURL(new Blob([byteArray], { type: 'application/octet-stream' }));
a.href =  fileurl;
a.download = filename; // Set the file name.
a.style.display = 'none';
document.body.appendChild(a);
a.click();
delete a;
window.URL.revokeObjectURL(fileurl);

byteArray应来自您的数据

票数 1
EN

Stack Overflow用户

发布于 2016-05-26 13:59:28

Bluish在这一点上是完全正确的,你不能通过Ajax做到这一点,因为JavaScript不能直接将文件保存到用户的计算机上(出于安全考虑)。不幸的是,将主窗口的URL指向您的文件下载意味着您几乎无法控制文件下载发生时的用户体验。

我创建了jQuery File Download,它通过OnSuccess和OnFailure回调来提供更好的用户体验,从而提供类似Ajax的文件下载体验。看看我关于插件解决的常见问题的blog post,以及一些使用它的方法,还有一个demo of jQuery File Download in action。这是source

这是一个简单的用例演示,使用带有promises的插件sourcedemo page还包括许多其他的“更好的用户体验”的例子。

代码语言:javascript
复制
$.fileDownload('some/file.pdf')
    .done(function () { alert('File download a success!'); })
    .fail(function () { alert('File download failed!'); });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37452574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档