ASP.NET解决网页下载文件过大的问题,使用stream方式下载

这个问题很久之前就有人问过了,最近又有人问到,就把它放在我的blog里
一般下载文件都会用Response.WriteFile(FullName)
这样会造成 Aspnet_wp.exe 暂存了太大空间而导致下载失败,建议采用stream方式下载


这个问题很久之前就有人问过了,最近又有人问到,就把它放在我的blog里

一般下载文件都会用Response.WriteFile(FullName)

这样会造成 Aspnet_wp.exe 暂存了太大空间而导致下载失败,建议采用stream方式下载

asp.net(c#)

部分程序

        System.IO.Stream iStream = null;

        //以10K为单位暂存:
        byte[] buffer = new Byte[10000];

        int length;

        long dataToRead;

        // 制定文档路径.
        string filepath = Server.MapPath("~/aaa.rar");

        //  得到文档名.
        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/x-rar-compressed";
            Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(filename));

            while (dataToRead > 0)
            ...{
                //保证client连接
                if (Response.IsClientConnected)
                ...{
                    length = iStream.Read(buffer, 0, 10000);

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

                    Response.Flush();

                    buffer = new Byte[10000];
                    dataToRead = dataToRead - length;
                }
                else
                ...{
                    //结束循环
                    dataToRead = -1;
                }
            }
        }
        catch (Exception ex)
        ...{
            // error
            Response.Write("Error : " + ex.Message);
        }
        finally
        ...{
            if (iStream != null)
            ...{
                //关闭文档
                iStream.Close();
            }
        }

参考网址:

http://www.blueshop.com.tw/board/show.asp?subcde=BRD200706131110357NX&fumcde=

http://www.blueshop.com.tw/board/show.asp?subcde=BRD20080506151701ZMH&fumcde=FUM20041006161839LRJ

原文:大专栏  ASP.NET解决网页下载文件过大的问题,使用stream方式下载


猜你喜欢

转载自www.cnblogs.com/chinatrump/p/11505321.html