【问题标题】:Download PDF file via ajax call ASP MVC通过 ajax 调用 ASP MVC 下载 PDF 文件
【发布时间】:2018-11-12 16:10:51
【问题描述】:

我尝试使用 ASP MVC 模型通过 ajax 调用在按钮单击时下载 pdf 文件 当我点击我的按钮时,什么也没有发生,但是当我在 url 上添加控制器方法时,我的文件被下载了。 我只想在单击按钮时下载它

JS:

$('#PrintTimeSheet').click(function () {
            $.ajax({
                type: 'POST',
                url: "/Home/DownloadFile",
                success: function (response) {
                }
            });
});

控制器:

public FileResult DownloadFile()
{
    Document PDF = new Document();
    MemoryStream memoryStream = new MemoryStream();
    PdfWriter writer = PdfWriter.GetInstance(PDF, memoryStream);
    PDF.Open();
    PDF.Add(new Paragraph("Something"));
    PDF.Close();
    byte[] bytes = memoryStream.ToArray();
    Response.ContentType = "application/pdf";
    Response.AddHeader("Content-Disposition", "attachment;filename=Receipt-test.pdf");
    Response.BinaryWrite(memoryStream.ToArray());
    return File(bytes, "application/pdf");
}

【问题讨论】:

  • 创建一个链接(如果你想要的话,可以把它设计成一个按钮)。
  • “仅在按钮上单击仅 JS”是什么意思?如果您实际上是在该操作方法中创建该 pdf 文件,您如何摆脱服务器端的操作?
  • 我不能使用链接,因为在 ajax 调用之前我有其他条件和关于 JS 的说明

标签: ajax asp.net-mvc


【解决方案1】:

不要使用 Ajax 下载文件。你可以在this question看到它真的很棘手。

最好使用GETwindow.location.href 因为文件正在异步下载。

$('#PrintTimeSheet').click(function () {
   window.location.href = "/Home/DownloadFile";
});

[HttpGet]
public FileResult DownloadFile()
{
   //your generate file code
}

【讨论】:

  • 按照您的示例,我的作品在 IE 中工作,但不适用于 Firefox。有什么建议吗?
  • @FreekNortier 如果您仍有问题,最好再问一个问题
猜你喜欢
  • 1970-01-01
  • 2013-05-16
  • 1970-01-01
  • 2011-10-03
  • 2011-11-26
  • 1970-01-01
相关资源
最近更新 更多