Solved

Download file with progress bar

Posted on 2008-10-01
4
847 Views
Last Modified: 2013-12-17
Hi

I used the following code to let user download a file. It does work. However the download dialog box does not show its download progress in a bar.

I use C# and ASP.NET to build it and I download it from IE6.

any help?
System.IO.FileInfo file = new FileInfo(filepath);
                if (file.Exists)
                {
                    System.IO.Stream iStream = null;
                    byte[] buffer = new Byte[10000];
                    int length;
                    long dataToRead;
                    string filename = System.IO.Path.GetFileName(filepath);
                    try
                    {
                        iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open,
                                    System.IO.FileAccess.Read, System.IO.FileShare.Read);
                        dataToRead = iStream.Length;
                        Response.ContentType = "application/octet-stream";
                        Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
                        while (dataToRead > 0)
                        {
                            if (Response.IsClientConnected)
                            {
                                length = iStream.Read(buffer, 0, 1000000);
                                Response.OutputStream.Write(buffer, 0, length);
                                Response.Flush();
                                buffer = new Byte[10000];
                                dataToRead = dataToRead - length;                                
                            }
                            else
                            {
                                dataToRead = -1;
                            }
                        }
                    }

Open in new window

0
Comment
Question by:techques
  • 2
  • 2
4 Comments
 

Author Comment

by:techques
ID: 22626497
How to fix it?
0
 
LVL 3

Expert Comment

by:tasky
ID: 22626677
You can try changing the content type to

application/force-download

Let me know if that has any effect.
0
 

Accepted Solution

by:
techques earned 0 total points
ID: 22631091
No, it should be

Response.AddHeader("Content-Length", data.ToString());
0
 
LVL 3

Expert Comment

by:tasky
ID: 22662167
Actually, it should be the length of the stream, not the value of the data...
0

Featured Post

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction A frequently used term in Object-Oriented design is "SOLID" which is a mnemonic acronym that covers five principles of OO design.  These principles do not stand alone; there is interplay among them.  And they are not laws, merely princ…
The article shows the basic steps of integrating an HTML theme template into an ASP.NET MVC project
Learn how to set-up custom confirmation messages to users who complete your Wufoo form. Include inputs from fields in your form, webpage redirects, and more with Wufoo’s confirmation options.
Learn how to set-up PayPal payment integration in your Wufoo form. Allow your users to remit payment through PayPal upon completion of your online form. This is helpful for collecting membership payments, customer payments, donations, and more.

840 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question