如何显示打开/保存对话框asp net mvc 4

时间:2013-01-03 12:50:52

标签: c# javascript asp.net asp.net-mvc asp.net-mvc-4

我可以请求一个文件并将其返回。 我不知道如何显示打开/保存对话框。

查看:

function saveDocument() {
    $.ajax({
        url: '/Operacao/saveDocument',
        type: 'POST',
        DataType: "html",
        success: function (data) {
            //I get the file content here
        }
    });
}

控制器:

public void saveDocument() {
    Response.ContentType = "image/jpeg";
    Response.AppendHeader("Content-Disposition", "attachment; filename=SailBig.jpg");
    Response.TransmitFile(Server.MapPath("~/MyPDFs/Pdf1.pdf"));    
    Response.End();
}

2 个答案:

答案 0 :(得分:8)

我认为你无法在浏览器async中下载文件,只需将用户重定向到操作,浏览器就会打开一个保存对话框窗口。在asp.net mvc中,您可以使用一种操作方法来下载文件,从而使用基本控制器的FileResult方法生成File

public ActionResult SaveDocument()
{   
    string filePath = Server.MapPath("~/MyPDFs/Pdf1.pdf");
    string contentType = "application/pdf";

    //Parameters to file are
    //1. The File Path on the File Server
    //2. The content type MIME type
    //3. The parameter for the file save by the browser

    return File(filePath, contentType, "Report.pdf");
}

答案 1 :(得分:1)

强制firefox(对chrome不起作用)打开保存对话框的一种方法是将内容类型设置为“application / octet-stream”,并为其指定一个具有正确扩展名的文件名。

public ActionResult SaveDocument()
{   
    string filePath = Server.MapPath("~/MyPDFs/Pdf1.pdf");
    string contentType = "application/octet-stream";  //<---- This is the magic

    //Parameters to file are
    //1. The File Path on the File Server
    //2. The content type MIME type
    //3. The parameter for the file save by the browser

    return File(filePath, contentType, "Report.pdf");
}