6

ファイルをリクエストして返送することもできます。開く/保存ダイアログボックスを表示する方法がわかりません。

意見:

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();
}
4

2 に答える 2

8

ブラウザの非同期でファイルをダウンロードすることはできないと思います。ユーザーをアクションにリダイレクトするだけで、ブラウザは保存ダイアログウィンドウを開きます。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");
}
于 2013-01-03T12:55:49.103 に答える
1

Firefox(Chromeでは機能しません)に保存ダイアログを強制的に開く1つの方法は、コンテンツタイプを「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");
}
于 2013-11-22T08:37:36.533 に答える