asp.net下载大文件代码

        public void Down(string filepath, HttpResponse aResponse)

        {

            System.IO.Stream iStream = null;



            // Buffer to read 10K bytes in chunk:

            byte[] buffer = new Byte[10000];



            // Length of the file:

            int length;



            // Total bytes to read:

            long dataToRead;



            // Identify the file to download including its path.

            // string filepath = "DownloadFileName";



            // Identify the file name.

            string filename = System.IO.Path.GetFileName(filepath);



            try

            {

                // Open the file.

                iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open,

                System.IO.FileAccess.Read, System.IO.FileShare.Read);



                // Total bytes to read:

                dataToRead = iStream.Length;

                aResponse.Clear();

                aResponse.Buffer = true;

                aResponse.Charset = "utf-8";

                //Response.ContentType = "application/octet-stream";

                aResponse.ContentType = "application/ms-excel";

                aResponse.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlPathEncode(filename));

                aResponse.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");



                // Read the bytes.

                while (dataToRead > 0)

                {

                    // Verify that the client is connected.

                    if (aResponse.IsClientConnected)

                    {

                        // Read the data in buffer.

                        length = iStream.Read(buffer, 0, 10000);



                        // Write the data to the current output stream.

                        aResponse.OutputStream.Write(buffer, 0, length);



                        // Flush the data to the HTML output.

                        aResponse.Flush();



                        buffer = new Byte[10000];

                        dataToRead = dataToRead - length;

                    }

                    else

                    {

                        //prevent infinite loop if user disconnects

                        dataToRead = -1;

                    }

                }

            }

            catch (Exception ex)

            {

                aResponse.Write("Error : " + ex.Message);

            }

            finally

            {

                if (iStream != null)

                {

                    iStream.Close();

                }

            }

        }

你可能感兴趣的:(asp.net)