通过ajax调用ASP MVC下载PDF文件

时间:2015-11-06 08:31:57

标签: ajax asp.net-mvc

我尝试使用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");
}

1 个答案:

答案 0 :(得分:5)

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

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

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

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