欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

asp.net大文件下载

程序员文章站 2022-04-19 23:25:01
一个可尝试的方案,使用二进制流下载,下载地址是诸如      这样的连接,在   down   页面...

一个可尝试的方案,使用二进制流下载,下载地址是诸如      这样的连接,在   down   页面进行权限判断,比如是否登录了,当前用户的点数是否满足   911199   对应的文件的下载点数   等等

二进制下载实例代码,支持特大文件下载

string   downfilepath   =   @ "d:\opensuse-10.2-gm-dvd-i386.iso ";   //   test   with   3.8gb,   ok   //   server.mappath( "~/files/somefile.iso ");
                system.io.fileinfo   downfileinfo   =   new   system.io.fileinfo(downfilepath);

                if   (!downfileinfo.exists)   throw   new   exception( "文件不存在。 ");
                const   int   chunk_size   =   10000;   //   指定块大小
                byte[]   buffer   =   new   byte[chunk_size];

                response.clear();
                //   fails   to   down   the   big   file   with   both   the   following   methods
                //   error:   system.argumentoutofrangeexception:   大小参数必须介于零和最大的   int32   值之间。
                //   response.writefile(downfilepath);
                //   or
                //   response.transmitfile(downfilepath);   //   asp.net   2.0   supported
                //
                using   (system.io.filestream   istream   =   system.io.file.openread(downfilepath))   {
                        long   datalengthtoread   =   istream.length;
                        response.contenttype   =   "application/octet-stream ";
                        response.addheader( "content-disposition ",
                                                              "attachment;   filename= "   +   server.urlpathencode(downfileinfo.name));   //   对文件名进行编码
                        while   (datalengthtoread   >   0   &&   response.isclientconnected)   {
                                int   lengthread   =   istream.read(buffer,   0,   chunk_size);
                                response.outputstream.write(buffer,   0,   lengthread);
                                response.flush();
                                datalengthtoread   =   datalengthtoread   -   lengthread;
                        }                      
                }
                response.close();

 


作者 郑文亮