Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C# download file ???

[es] :: .NET :: .NET Desktop razvoj :: C# download file ???

[ Pregleda: 1253 | Odgovora: 2 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mikelins

Član broj: 100604
Poruke: 15
*.rtv.co.yu.



Profil

icon C# download file ???02.08.2007. u 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
02.08.2007. u 09:41 

dusty
Predrag Glumac
Konacno u Srbiji :)

Član broj: 15383
Poruke: 508
*.ptt.yu.

Sajt: www.mika.rs


Profil

icon Re: C# download file ???02.08.2007. u 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.
Live long and prosper :)
02.08.2007. u 09:49 

bunker
Srđan Savković
Smederevo

Član broj: 4495
Poruke: 236
212.5.210.*

ICQ: 30281997


Profil

icon Re: C# download file ???02.08.2007. u 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();
            }
        }

bunker
02.08.2007. u 10:44 

[es] :: .NET :: .NET Desktop razvoj :: C# download file ???

[ Pregleda: 1253 | Odgovora: 2 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.