[ mikelins @ 02.08.2007. 09:41 ] @
U web aplikaciji mi je potrebno da klikom na Button download-ujem fajl sa mogucnoscu izbora gde da ga snimim. Imam URL fajla koji zelim da download-ujem. hvala |
[ mikelins @ 02.08.2007. 09:41 ] @
[ dusty @ 02.08.2007. 09:49 ] @
U Response spostavi property ContentType na "octet/stream", i dodaj heder Content-Disposition da je "attachment;filename=ime_tvog_fajla" preko metode AddHeader. Posle sa WriteFile metodom saljes fajl.
[ bunker @ 02.08.2007. 10:44 ] @
Da se ne bi mnogo pisalo, bolje je ovako:
u while petlji se podaci baferuju, u suprotnom bi imao gresku sa vecim fajlovima koje prevuces. Ovo bi trebalo da ti zavrsi posao. Mozes da iskljucis static i da dodas ivent hendlere kako bi izveo neki progres bar (ako skidas velike fajlove bilo bi korisno) Code: public static MemoryStream HttpDownload(string p_URL) { HttpWebRequest request = null; HttpWebResponse response = null; Stream responseStream = null; try { request = (HttpWebRequest) WebRequest.Create(p_URL); request.Credentials = CredentialCache.DefaultCredentials; response = (HttpWebResponse) request.GetResponse(); responseStream = response.GetResponseStream(); byte[] fileSize = new byte[response.ContentLength]; int bufferSize = 4096; byte[] buffer = new byte[bufferSize]; int targetBufferIndex = 0; while(true) { int n = responseStream.Read(buffer, 0, bufferSize); if (n == 0) break; Array.Copy(buffer, 0, fileSize, targetBufferIndex, n); targetBufferIndex += n; } return new MemoryStream(fileSize, 0, fileSize.Length); } catch { throw; } finally { if(null != responseStream) responseStream.Close(); if(null != response) response.Close(); if(null != request) request.Abort(); } } Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|