2012-08-23 11 views
8

Sto richiedendo la pagina .ashx dalla pagina master script lato client (Jquery) che ha un codice per scaricare un file PDF. Quando eseguo il debug, posso vedere l'esecuzione del codice "download del file" ma il file non viene scaricato.download di file chiamando la pagina .ashx

$.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

questo post potrebbe aiutare? http://stackoverflow.com/questions/1999607/download-and-open-pdf-file-using-ajax –

risposta

11

Il file sta scaricando, ma si ottiene su javascript, sul parametro data della vostra chiamata, perché si chiama con l'Ajax.

Si utilizza un gestore - AJAX in modo non necessario qui, e la cosa più facile da fare utilizzando JavaScript è che:

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

o con un semplice collegamento come

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

Ah, e invia i parametri tramite l'url, non puoi pubblicarli in questo modo.

Si può anche leggere: What is the best way to download file from server

+0

Questo è molto utile, hai ragione con la risposta. Dopo alcuni minuti di tentativo di scaricare un file in .ashx con una chiamata json nel client, non ho ottenuto il file in alcun modo. – amelian

+0

@Aristos funziona perfettamente. Ma ho bisogno di mostrare il messaggio se qualcosa va storto dal lato server. Come potrei farlo? Messaggi "Qualcosa è andato storto o File non trovato" – Prabu

+0

@Prabu sul lato server è possibile registrare l'errore - relativamente facile all'interno del gestore. Trova o scrivi una lezione di registro ... – Aristos