Belius' Blog

Il blog di Simone Belia
posts - 16, comments - 335, trackbacks - 31

ASP.NET AJAX File Download

Molte volte è necessario permettere agli utenti di scaricare dei file dalle nostre applicazioni ASP.NET, in maniera un pò più elaborata del semplice link alla risorsa. Mettete per esempio che il file da scaricare non esista, ma viene generato durante il postback, oppure mettete che per sicurezza i file stanno all'interno di una cartella del server non raggiungibile tramite Http.

Le metodologie per venire incontro a queste problematiche sono state documentate tantissime volte, ma se voglio utilizzarle con AJAX si devono utilizzare dei trucchetti, proprio perchè, come per l'upload di file, AJAX non permette il download asincrono delle risorse....

In questo post troverete uno di questi trucchetti...e spero che vi faccia comodo come lo ha fatto a me!!! :-)

Il trucchetto consiste di crearsi un HttpHandler che si occupi di recuperare la risorsa e che la restituisca sottoforma di stream nella Response. Logicamente l'handler potendo accedere al contesto e quindi il QueryString e quant'altro potrà effettuare tutti suoi controlli di sicurezza prima di restituire il file.....non me ne vogliano...ma in poche parole non fate come loro  :-)

Successivamente nelle pagine dove è presente uno scriptmanager ed uno o più updatepanel si dovrà aggiungere questo frammento di codice JavaScript:

function GetFile(parm)
{
   var iframe = document.createElement("iframe");
   iframe.src = "Downloader.ashx?id=" + parm;
   iframe.style.display = "none";
  document.body.appendChild(iframe);
}

Il Javascript non fa altro che creare un tag iframe, impostare come src il nostro handler ed aggiungerlo alla pagina. In questa maniera noi possiamo tranquillamente aggiungere ad un bottone che si occupa di scaricare il file il seguente codice:


ScriptManager.RegisterClientScriptBlock(UpdatePanel1, UpdatePanel1.GetType(), "download", "GetFile('5648752168497');", true);

che "dice" allo scriptmanager della pagina di eseguire la funzione Javascript GetFile passandogli come parametro (in questo esempio un numerone di prova) un qualcosa che vi permetta di capire quale file scaricare.

 

Il codice di esempio lo potete scaricare da qui

Print | posted on venerdì 12 ottobre 2007 14:55 | Filed Under [ ASP.NET AJAX Tips ]

Feedback

Gravatar

# re: ASP.NET AJAX File Download

Mitico!
Sembra che mi hai letto nel pensiero, avevo esattamente questa necessità!
12/10/2007 16:18 | Alessandro Sorcinelli
Gravatar

# re: ASP.NET AJAX File Download

far fare le cose ad un iframe nascosto è sempre stato l'AJAX dei poveri... :) adesso che FFox lo supporta lo si fa un po' più a cuor leggero, ma qualche tempo fa restringeva l'applicazione al solo IE...
12/10/2007 19:07 | marco
Gravatar

# re: ASP.NET AJAX File Download

yar yar
26/06/2008 02:56 | sohbet
Gravatar

# re: ASP.NET AJAX File Download

PDF to TIFF Converter is a professional PDF to images program which let you convert PDF to TIFF and lots of image formats with high quality, such as JPEG, PNG, GIF, BMP, PCX, TGA. As to convert PDF , you can freely set output encoder, including lossless, RLE, FAX G3, etc. Using this PDF to TIFF Converter, you alos can choose colorful, grey and black/white as output color. Reset resolution is applicable as well.
PDF to XLS Converter
PDF to EPUB Converter
Convert PDF to GIF
19/08/2010 09:27 | taoruankeji
Gravatar

# re: ASP.NET AJAX File Download


Here PDF to Text Converter is the best PDF Text Converter, which is designed to convert PDF to Txt and extract text from the read-only PDF files by itself without the need of Adobe Acrobat or Adobe Reader software.
PDF to JPEG
PDF Creator
PDF to epub
20/04/2012 07:46 | pdftojpeg
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET