2012-08-23 10 views
8

Ich Anfrage .ashx Seite von Master-Seite Client-Seite Skript (Jquery), die einen Code zum Download einer PDF-Datei hat. Wenn ich es debugge, kann ich die Ausführung von "Dateidownload" -Code sehen, aber die Datei wird nicht heruntergeladen.Dateidownload durch Aufruf von .ashx Seite

$.ajax({ 
      type: "POST", 
      url: "FileDownload.ashx", 
      dataType: "html", 
      success: function (data) { } 
     } 
     ); 


    public class FileDownload : IHttpHandler 
{ 

    public void ProcessRequest(HttpContext context) 
    { 
     //context.Response.ContentType = "text/plain"; 
     //context.Response.Write("Hello World"); 

     string fileName = "BUSProjectCard.pdf"; 
     string filePath = context.Server.MapPath("~/Print/"); 
     context.Response.Clear(); 
     context.Response.ContentType = "application/pdf"; 
     context.Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName); 
     context.Response.TransmitFile(filePath + fileName); 
     context.Response.End(); 
    } 
+1

dieser Beitrag könnte Ihnen helfen? http://stackoverflow.com/questions/1999607/download-and-open-pdf-file-using-ajax –

Antwort

11

Ihre Datei heruntergeladen wird, aber Sie es auf Javascript bekommen, auf dem data Parameter des Anrufs, weil Sie es mit Ajax nennen.

Sie verwenden einen Handler - so hier nicht benötigt Ajax, und die einfachste Sache zu tun mit Javascript ist, dass:

window.location = "FileDownload.ashx?parametres=22"; 

oder mit einem einfachen Link als

<a target="_blank" href="FileDownload.ashx?parametres=22" >download...</a> 

Ah, und Senden Sie die Parameter über die URL, Sie können sie nicht auf diese Weise posten.

Sie können auch lesen: What is the best way to download file from server

+0

Dies ist sehr hilfreich, Sie haben Recht mit der Antwort. Nachdem ich einige Minuten versucht habe, eine Datei in .ashx mit einem json-Aufruf im Client herunterzuladen, habe ich die Datei in keiner Weise erhalten. – amelian

+0

@Aristos das funktioniert perfekt. Aber ich muss die Nachricht zeigen, wenn etwas auf der Serverseite schief geht. Wie würde ich das tun? Nachrichten "Etwas ging schief oder Datei nicht gefunden" – Prabu

+0

@ Prabu auf der Serverseite können Sie nur den Fehler protokollieren - relativ einfach innerhalb des Handlers. Finde oder schreibe eine Log-Klasse ... – Aristos