jquery - 如何使用jquery和knockout从MVC Controller 下载文件

标签 jquery asp.net-mvc knockout.js

我在 Controller 中有一个方法可以返回 FileResult :

public FileResult DownloadRequestsAsCsvFile()
{   
    var contentType = "text/csv";
    var content = CreateCsvFileOfPendingLeadRequests();
    var bytes = Encoding.UTF8.GetBytes(content);
    var result = new FileContentResult(bytes, contentType);
    string n = string.Format("LeadRequests-{0:yyyy-MM-dd_hh-mm-ss-tt}.csv", DateTime.Now);
    result.FileDownloadName = n;
    return result
 }

我有一个 knockout 函数来调用 Controller 方法来下载文件,该方法被调用并完成,但文件不是使用浏览器下载的。如何让浏览器下载文件?

self.getCsvFileOfRequests = function () {
            $.get('../Home/DownloadRequestsAsCsvFile', function (csv) {

            }).done(function() {
                toastr.success("File downloaded successfully.")
            }).error(function() {
                toastr.error("There was a problem downloading the file.");
            });
        }

最佳答案

您无法通过这种方式真正使用 jQuery 下载文件。你要做的就是将一个隐藏的 iframe 注入(inject)到你的 DOM 中,并将其源 url 设置为你想要下载的文件的 url。请参阅this answer了解更多信息。

关于jquery - 如何使用jquery和knockout从MVC Controller 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29809789/

相关文章:

javascript - 如何编写 JavaScript 函数来加载显式的超大幻灯片

c# - 列出 KeyVault 中的 secret 而无需登录每个 secret ?

c# - 实现自定义双因素身份验证,为什么 GetTwoFactorAuthenticationUserAsync() 返回 null User?

ajax - 使用延迟加载或类似方法处理 knockout 中的大量数据

knockout.js - 带有 "options"绑定(bind)的 Knockout 自定义绑定(bind)包装器

jquery - masonry 水平布局堆叠怪

javascript - Bootstrap 警报在大屏幕上覆盖行时出现问题

asp.net-mvc - MVC 应用程序中部分页面的 SEO

php - 在 firebug 或 chrome 开发人员中更改客户端的 javascript 变量

jQuery:临时更改样式然后重置为原始类