2013-01-03 13 views
5

Ich bin in der Lage, eine Datei anfordern und auch zurückgegeben werden. Ich weiß nicht, wie man ein Öffnen/Speichern-Dialogfeld anzeigt.Wie zu öffnen/speichern Dialog asp net mvc 4

Ausblick:

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

Controller:

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

Antwort

7

Ich glaube, Sie nicht eine Datei in einem Browser async herunterladen können, leiten Sie einfach den Benutzer auf die Aktion und der Browser öffnet ein Speicherdialogfenster. In asp.net mvc könnten Sie eine Aktionsmethode haben, um eine Datei herunterzuladen, die in FileResult mit der File Methode des Basiscontrollers resultiert.

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"); 
} 
+0

Vielen Dank !!! –

+1

Es wird automatisch heruntergeladen, ohne zu fragen. Der Dialog wird nicht angezeigt! –

+3

Das ist Browser abhängig. Wenn Sie festlegen, dass der Download automatisch in einen bestimmten Ordner erfolgt, wird der Browser automatisch heruntergeladen. Firefox und Chrome sind einige Browser mit diesem Verhalten. –

1

Eine Möglichkeit, Firefox zu zwingen (Arbeit für Chrom doen't) um den Dialog speichern zu öffnen, ist die content zu „application/octet-stream“ zu setzen und ihm einen Dateinamen mit der richtigen Erweiterung geben.

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"); 
}