通过POST ajax调用下载文件

Download file by POST ajax call

本文关键字:下载 文件 调用 ajax POST 通过      更新时间:2023-09-26

我有一个Asp.Net MVC项目,在我看来,这是一个延伸:

$.ajax({
        beforeSend: function () {
            LoadStart();
        },
        complete: function () {
            LoadStop();
        },
        //async: false,
        contentType: 'application/json, charset=utf-8',
        dataType: 'json',
        type: 'POST',
        url: '@Url.Action("MyAction", "MyController")',
        data: JSON.stringify(
            {
                Param1: 1,
                Param2: 2
            }),
        success: function (data) {
            $("#pdf-content").show();
            // Here, fill DIV (pdf-content) with PDF.
        },
        fail: function () {
            alert("Fail");
        }
});


MyAction中,我有:

[HttpPost]
public ActionResult MyAction(int Param1, int Param2)
{
    // Code ...
    MemoryStream stream = new MemoryStream();
    outPdf.Save(stream);
    byte[] fileContents = stream.ToArray();
    return File(fileContents, "application/pdf", "myFile.pdf");
}


如何在DIV中显示PDF,甚至直接下载而不显示?

在这种情况下,最佳解决方案是:在POST方法中,使用唯一名称(例如GUID)将文件保存在服务器上,并将此GUID返回给客户端。

然后发出get请求,通过guid找到您的文件,并将文件返回到客户端并从服务器中删除。

创建一个可以删除所有旧文件的服务是非常好的。