Asp.net直接保存文件到客户端

    在我们的系统的编写过程中,应该有很多的时候需要客户下载文件.我第一次的做法(应该也是大部分人的做法吧?)是:

1 None.gif             HttpResponse response  =  HttpContext.Current.Response;
2 None.gif             string  js  =   " <script language=javascript>window.open('{0}');</script> " ;
3 None.gif            js  =   string .Format(js, url);
4 None.gif            response.Write(js);
5 None.gif

    但是有个问题了,就是会被广告拦截软件直接拦截掉,另我非常的头痛,于是寻找更好的解决方法.看了用Response.BinaryWrite写文件流一文之后觉得确实可以如此,修改代码如下:

 1 ExpandedBlockStart.gif ContractedBlock.gif /**/ /// <summary>
 2InBlock.gif        /// 下载文件
 3InBlock.gif        /// </summary>
 4ExpandedBlockEnd.gif        /// <param name="filename">文件物理地址</param>        

 5 None.gif
 6 None.gif protected   void  DownloadFile( string  filename)
 7 ExpandedBlockStart.gifContractedBlock.gif         dot.gif {
 8InBlock.gif            string saveFileName = "test.xls";
 9InBlock.gif            int intStart = filename.LastIndexOf("\\")+1;
10InBlock.gif            saveFileName = filename.Substring(intStart,filename.Length-intStart);
11InBlock.gif            FileStream MyFileStream; 
12InBlock.gif            long FileSize; 
13InBlock.gif                
14InBlock.gif            MyFileStream = new FileStream(filename,FileMode.Open); 
15InBlock.gif            FileSize = MyFileStream.Length; 
16InBlock.gif                    
17InBlock.gif            byte[] Buffer = new byte[(int)FileSize]; 
18InBlock.gif            MyFileStream.Read(Buffer, 0, (int)FileSize); 
19InBlock.gif            MyFileStream.Close(); 
20InBlock.gif                
21InBlock.gif            Response.AddHeader("Content-Disposition""attachment;filename="+saveFileName);
22InBlock.gif            Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
23InBlock.gif            Response.ContentType = "application/vnd.ms-excel"
24InBlock.gif                
25InBlock.gif            Response.BinaryWrite(Buffer); 
26InBlock.gif            Response.Flush(); 
27InBlock.gif            Response.Close(); 
28InBlock.gif            Response.End();
29InBlock.gif
30ExpandedBlockEnd.gif        }

31 None.gif

 但是有个严重的问题,就是文件格式。这样只是将流输出,且无法正确识别格式。还好,能人层出不穷,  柚子Nan 提出了能否不考虑文件的类型,直接把文件显示到浏览器(Response) 的想法正好切中我的要害所在,于是急忙研究了柚子Nan的想法,修改出最后代码:

 1 ExpandedBlockStart.gif ContractedBlock.gif          /**/ /// <summary>
 2InBlock.gif        /// 下载文件
 3InBlock.gif        /// </summary>
 4ExpandedBlockEnd.gif        /// <param name="filename">文件物理地址</param>

 5 None.gif          protected   void  DownloadFile( string  filename)
 6 ExpandedBlockStart.gifContractedBlock.gif         dot.gif {
 7InBlock.gif            string saveFileName = "test.xls";
 8InBlock.gif            int intStart = filename.LastIndexOf("\\")+1;
 9InBlock.gif            saveFileName = filename.Substring(intStart,filename.Length-intStart);
10InBlock.gif
11InBlock.gif            Response.Clear();
12InBlock.gif            Response.Charset = "utf-8";
13InBlock.gif            Response.Buffer= true;
14InBlock.gif            this.EnableViewState = false;
15InBlock.gif            Response.ContentEncoding = System.Text.Encoding.UTF8;
16InBlock.gif
17InBlock.gif            Response.AppendHeader("Content-Disposition","attachment;filename=" + saveFileName); 
18InBlock.gif            Response.WriteFile(filename); 
19InBlock.gif            Response.Flush();
20InBlock.gif            Response.Close();
21InBlock.gif
22InBlock.gif            Response.End();
23ExpandedBlockEnd.gif        }


 

文件的ContentType类型 小全
ContractedBlock.gif ExpandedBlockStart.gif dot.gif #region 
InBlock.gif            
".*"="application/octet-stream"
InBlock.gif            
".001"="application/x-001"
InBlock.gif            
".301"="application/x-301"
InBlock.gif            
".323"="text/h323"
InBlock.gif            
".906"="application/x-906"
InBlock.gif            
".907"="drawing/907"
InBlock.gif            
".a11"="application/x-a11"
InBlock.gif            
".acp"="audio/x-mei-aac"
InBlock.gif            
".ai"="application/postscript"
InBlock.gif            
".aif"="audio/aiff"
InBlock.gif            
".aifc"="audio/aiff"
InBlock.gif            
".aiff"="audio/aiff"
InBlock.gif            
".anv"="application/x-anv"
InBlock.gif            
".asa"="text/asa"
InBlock.gif            
".asf"="video/x-ms-asf"
InBlock.gif            
".asp"="text/asp"
InBlock.gif            
".asx"="video/x-ms-asf"
InBlock.gif            
".au"="audio/basic"
InBlock.gif            
".avi"="video/avi"
InBlock.gif            
".awf"="application/vnd.adobe.workflow"
InBlock.gif            
".biz"="text/xml"
InBlock.gif            
".bmp"="application/x-bmp"
InBlock.gif            
".bot"="application/x-bot"
InBlock.gif            
".c4t"="application/x-c4t"
InBlock.gif            
".c90"="application/x-c90"
InBlock.gif            
".cal"="application/x-cals"
InBlock.gif            
".cat"="application/vnd.ms-pki.seccat"
InBlock.gif            
".cdf"="application/x-netcdf"
InBlock.gif            
".cdr"="application/x-cdr"
InBlock.gif            
".cel"="application/x-cel"
InBlock.gif            
".cer"="application/x-x509-ca-cert"
InBlock.gif            
".cg4"="application/x-g4"
InBlock.gif            
".cgm"="application/x-cgm"
InBlock.gif            
".cit"="application/x-cit"
InBlock.gif            
".class"="java/*"
InBlock.gif            
".cml"="text/xml"
InBlock.gif            
".cmp"="application/x-cmp"
InBlock.gif            
".cmx"="application/x-cmx"
InBlock.gif            
".cot"="application/x-cot"
InBlock.gif            
".crl"="application/pkix-crl"
InBlock.gif            
".crt"="application/x-x509-ca-cert"
InBlock.gif            
".csi"="application/x-csi"
InBlock.gif            
".css"="text/css"
InBlock.gif            
".cut"="application/x-cut"
InBlock.gif            
".dbf"="application/x-dbf"
InBlock.gif            
".dbm"="application/x-dbm"
InBlock.gif            
".dbx"="application/x-dbx"
InBlock.gif            
".dcd"="text/xml"
InBlock.gif            
".dcx"="application/x-dcx"
InBlock.gif            
".der"="application/x-x509-ca-cert"
InBlock.gif            
".dgn"="application/x-dgn"
InBlock.gif            
".dib"="application/x-dib"
InBlock.gif            
".dll"="application/x-msdownload"
InBlock.gif            
".doc"="application/msword"
InBlock.gif            
".dot"="application/msword"
InBlock.gif            
".drw"="application/x-drw"
InBlock.gif            
".dtd"="text/xml"
InBlock.gif            
".dwf"="Model/vnd.dwf"
InBlock.gif            
".dwf"="application/x-dwf"
InBlock.gif            
".dwg"="application/x-dwg"
InBlock.gif            
".dxb"="application/x-dxb"
InBlock.gif            
".dxf"="application/x-dxf"
InBlock.gif            
".edn"="application/vnd.adobe.edn"
InBlock.gif            
".emf"="application/x-emf"
InBlock.gif            
".eml"="message/rfc822"
InBlock.gif            
".ent"="text/xml"
InBlock.gif            
".epi"="application/x-epi"
InBlock.gif            
".eps"="application/x-ps"
InBlock.gif            
".eps"="application/postscript"
InBlock.gif            
".etd"="application/x-ebx"
InBlock.gif            
".exe"="application/x-msdownload"
InBlock.gif            
".fax"="image/fax"
InBlock.gif            
".fdf"="application/vnd.fdf"
InBlock.gif            
".fif"="application/fractals"
InBlock.gif            
".fo"="text/xml"
InBlock.gif            
".frm"="application/x-frm"
InBlock.gif            
".g4"="application/x-g4"
InBlock.gif            
".gbr"="application/x-gbr"
InBlock.gif            
".gcd"="application/x-gcd"
InBlock.gif            
".gif"="image/gif"
InBlock.gif            
".gl2"="application/x-gl2"
InBlock.gif            
".gp4"="application/x-gp4"
InBlock.gif            
".hgl"="application/x-hgl"
InBlock.gif            
".hmr"="application/x-hmr"
InBlock.gif            
".hpg"="application/x-hpgl"
InBlock.gif            
".hpl"="application/x-hpl"
InBlock.gif            
".hqx"="application/mac-binhex40"
InBlock.gif            
".hrf"="application/x-hrf"
InBlock.gif            
".hta"="application/hta"
InBlock.gif            
".htc"="text/x-component"
InBlock.gif            
".htm"="text/html"
InBlock.gif            
".html"="text/html"
InBlock.gif            
".htt"="text/webviewhtml"
InBlock.gif            
".htx"="text/html"
InBlock.gif            
".icb"="application/x-icb"
InBlock.gif            
".ico"="image/x-icon"
InBlock.gif            
".ico"="application/x-ico"
InBlock.gif            
".iff"="application/x-iff"
InBlock.gif            
".ig4"="application/x-g4"
InBlock.gif            
".igs"="application/x-igs"
InBlock.gif            
".iii"="application/x-iphone"
InBlock.gif            
".img"="application/x-img"
InBlock.gif            
".ins"="application/x-internet-signup"
InBlock.gif            
".isp"="application/x-internet-signup"
InBlock.gif            
".IVF"="video/x-ivf"
InBlock.gif            
".java"="java/*"
InBlock.gif            
".jfif"="image/jpeg"
InBlock.gif            
".jpe"="image/jpeg"
InBlock.gif            
".jpe"="application/x-jpe"
InBlock.gif            
".jpeg"="image/jpeg"
InBlock.gif            
".jpg"="image/jpeg"
InBlock.gif            
".jpg"="application/x-jpg"
InBlock.gif            
".js"="application/x-javascript"
InBlock.gif            
".jsp"="text/html"
InBlock.gif            
".la1"="audio/x-liquid-file"
InBlock.gif            
".lar"="application/x-laplayer-reg"
InBlock.gif            
".latex"="application/x-latex"
InBlock.gif            
".lavs"="audio/x-liquid-secure"
InBlock.gif            
".lbm"="application/x-lbm"
InBlock.gif            
".lmsff"="audio/x-la-lms"
InBlock.gif            
".ls"="application/x-javascript"
InBlock.gif            
".ltr"="application/x-ltr"
InBlock.gif            
".m1v"="video/x-mpeg"
InBlock.gif            
".m2v"="video/x-mpeg"
InBlock.gif            
".m3u"="audio/mpegurl"
InBlock.gif            
".m4e"="video/mpeg4"
InBlock.gif            
".mac"="application/x-mac"
InBlock.gif            
".man"="application/x-troff-man"
InBlock.gif            
".math"="text/xml"
InBlock.gif            
".mdb"="application/msaccess"
InBlock.gif            
".mdb"="application/x-mdb"
InBlock.gif            
".mfp"="application/x-shockwave-flash"
InBlock.gif            
".mht"="message/rfc822"
InBlock.gif            
".mhtml"="message/rfc822"
InBlock.gif            
".mi"="application/x-mi"
InBlock.gif            
".mid"="audio/mid"
InBlock.gif            
".midi"="audio/mid"
InBlock.gif            
".mil"="application/x-mil"
InBlock.gif            
".mml"="text/xml"
InBlock.gif            
".mnd"="audio/x-musicnet-download"
InBlock.gif            
".mns"="audio/x-musicnet-stream"
InBlock.gif            
".mocha"="application/x-javascript"
InBlock.gif            
".movie"="video/x-sgi-movie"
InBlock.gif            
".mp1"="audio/mp1"
InBlock.gif            
".mp2"="audio/mp2"
InBlock.gif            
".mp2v"="video/mpeg"
InBlock.gif            
".mp3"="audio/mp3"
InBlock.gif            
".mp4"="video/mpeg4"
InBlock.gif            
".mpa"="video/x-mpg"
InBlock.gif            
".mpd"="application/vnd.ms-project"
InBlock.gif            
".mpe"="video/x-mpeg"
InBlock.gif            
".mpeg"="video/mpg"
InBlock.gif            
".mpg"="video/mpg"
InBlock.gif            
".mpga"="audio/rn-mpeg"
InBlock.gif            
".mpp"="application/vnd.ms-project"
InBlock.gif            
".mps"="video/x-mpeg"
InBlock.gif            
".mpt"="application/vnd.ms-project"
InBlock.gif            
".mpv"="video/mpg"
InBlock.gif            
".mpv2"="video/mpeg"
InBlock.gif            
".mpw"="application/vnd.ms-project"
InBlock.gif            
".mpx"="application/vnd.ms-project"
InBlock.gif            
".mtx"="text/xml"
InBlock.gif            
".mxp"="application/x-mmxp"
InBlock.gif            
".net"="image/pnetvue"
InBlock.gif            
".nrf"="application/x-nrf"
InBlock.gif            
".nws"="message/rfc822"
InBlock.gif            
".odc"="text/x-ms-odc"
InBlock.gif            
".out"="application/x-out"
InBlock.gif            
".p10"="application/pkcs10"
InBlock.gif            
".p12"="application/x-pkcs12"
InBlock.gif            
".p7b"="application/x-pkcs7-certificates"
InBlock.gif            
".p7c"="application/pkcs7-mime"
InBlock.gif            
".p7m"="application/pkcs7-mime"
InBlock.gif            
".p7r"="application/x-pkcs7-certreqresp"
InBlock.gif            
".p7s"="application/pkcs7-signature"
InBlock.gif            
".pc5"="application/x-pc5"
InBlock.gif            
".pci"="application/x-pci"
InBlock.gif            
".pcl"="application/x-pcl"
InBlock.gif            
".pcx"="application/x-pcx"
InBlock.gif            
".pdf"="application/pdf"
InBlock.gif            
".pdf"="application/pdf"
InBlock.gif            
".pdx"="application/vnd.adobe.pdx"
InBlock.gif            
".pfx"="application/x-pkcs12"
InBlock.gif            
".pgl"="application/x-pgl"
InBlock.gif            
".pic"="application/x-pic"
InBlock.gif            
".pko"="application/vnd.ms-pki.pko"
InBlock.gif            
".pl"="application/x-perl"
InBlock.gif            
".plg"="text/html"
InBlock.gif            
".pls"="audio/scpls"
InBlock.gif            
".plt"="application/x-plt"
InBlock.gif            
".png"="image/png"
InBlock.gif            
".png"="application/x-png"
InBlock.gif            
".pot"="application/vnd.ms-powerpoint"
InBlock.gif            
".ppa"="application/vnd.ms-powerpoint"
InBlock.gif            
".ppm"="application/x-ppm"
InBlock.gif            
".pps"="application/vnd.ms-powerpoint"
InBlock.gif            
".ppt"="application/vnd.ms-powerpoint"
InBlock.gif            
".ppt"="application/x-ppt"
InBlock.gif            
".pr"="application/x-pr"
InBlock.gif            
".prf"="application/pics-rules"
InBlock.gif            
".prn"="application/x-prn"
InBlock.gif            
".prt"="application/x-prt"
InBlock.gif            
".ps"="application/x-ps"
InBlock.gif            
".ps"="application/postscript"
InBlock.gif            
".ptn"="application/x-ptn"
InBlock.gif            
".pwz"="application/vnd.ms-powerpoint"
InBlock.gif            
".r3t"="text/vnd.rn-realtext3d"
InBlock.gif            
".ra"="audio/vnd.rn-realaudio"
InBlock.gif            
".ram"="audio/x-pn-realaudio"
InBlock.gif            
".ras"="application/x-ras"
InBlock.gif            
".rat"="application/rat-file"
InBlock.gif            
".rdf"="text/xml"
InBlock.gif            
".rec"="application/vnd.rn-recording"
InBlock.gif            
".red"="application/x-red"
InBlock.gif            
".rgb"="application/x-rgb"
InBlock.gif            
".rjs"="application/vnd.rn-realsystem-rjs"
InBlock.gif            
".rjt"="application/vnd.rn-realsystem-rjt"
InBlock.gif            
".rlc"="application/x-rlc"
InBlock.gif            
".rle"="application/x-rle"
InBlock.gif            
".rm"="application/vnd.rn-realmedia"
InBlock.gif            
".rmf"="application/vnd.adobe.rmf"
InBlock.gif            
".rmi"="audio/mid"
InBlock.gif            
".rmj"="application/vnd.rn-realsystem-rmj"
InBlock.gif            
".rmm"="audio/x-pn-realaudio"
InBlock.gif            
".rmp"="application/vnd.rn-rn_music_package"
InBlock.gif            
".rms"="application/vnd.rn-realmedia-secure"
InBlock.gif            
".rmvb"="application/vnd.rn-realmedia-vbr"
InBlock.gif            
".rmx"="application/vnd.rn-realsystem-rmx"
InBlock.gif            
".rnx"="application/vnd.rn-realplayer"
InBlock.gif            
".rp"="image/vnd.rn-realpix"
InBlock.gif            
".rpm"="audio/x-pn-realaudio-plugin"
InBlock.gif            
".rsml"="application/vnd.rn-rsml"
InBlock.gif            
".rt"="text/vnd.rn-realtext"
InBlock.gif            
".rtf"="application/msword"
InBlock.gif            
".rtf"="application/x-rtf"
InBlock.gif            
".rv"="video/vnd.rn-realvideo"
InBlock.gif            
".sam"="application/x-sam"
InBlock.gif            
".sat"="application/x-sat"
InBlock.gif            
".sdp"="application/sdp"
InBlock.gif            
".sdw"="application/x-sdw"
InBlock.gif            
".sit"="application/x-stuffit"
InBlock.gif            
".slb"="application/x-slb"
InBlock.gif            
".sld"="application/x-sld"
InBlock.gif            
".slk"="drawing/x-slk"
InBlock.gif            
".smi"="application/smil"
InBlock.gif            
".smil"="application/smil"
InBlock.gif            
".smk"="application/x-smk"
InBlock.gif            
".snd"="audio/basic"
InBlock.gif            
".sol"="text/plain"
InBlock.gif            
".sor"="text/plain"
InBlock.gif            
".spc"="application/x-pkcs7-certificates"
InBlock.gif            
".spl"="application/futuresplash"
InBlock.gif            
".spp"="text/xml"
InBlock.gif            
".ssm"="application/streamingmedia"
InBlock.gif            
".sst"="application/vnd.ms-pki.certstore"
InBlock.gif            
".stl"="application/vnd.ms-pki.stl"
InBlock.gif            
".stm"="text/html"
InBlock.gif            
".sty"="application/x-sty"
InBlock.gif            
".svg"="text/xml"
InBlock.gif            
".swf"="application/x-shockwave-flash"
InBlock.gif            
".tdf"="application/x-tdf"
InBlock.gif            
".tg4"="application/x-tg4"
InBlock.gif            
".tga"="application/x-tga"
InBlock.gif            
".tif"="image/tiff"
InBlock.gif            
".tif"="application/x-tif"
InBlock.gif            
".tiff"="image/tiff"
InBlock.gif            
".tld"="text/xml"
InBlock.gif            
".top"="drawing/x-top"
InBlock.gif            
".torrent"="application/x-bittorrent"
InBlock.gif            
".tsd"="text/xml"
InBlock.gif            
".txt"="text/plain"
InBlock.gif            
".uin"="application/x-icq"
InBlock.gif            
".uls"="text/iuls"
InBlock.gif            
".vcf"="text/x-vcard"
InBlock.gif            
".vda"="application/x-vda"
InBlock.gif            
".vdx"="application/vnd.visio"
InBlock.gif            
".vml"="text/xml"
InBlock.gif            
".vpg"="application/x-vpeg005"
InBlock.gif            
".vsd"="application/vnd.visio"
InBlock.gif            
".vsd"="application/x-vsd"
InBlock.gif            
".vss"="application/vnd.visio"
InBlock.gif            
".vst"="application/vnd.visio"
InBlock.gif            
".vst"="application/x-vst"
InBlock.gif            
".vsw"="application/vnd.visio"
InBlock.gif            
".vsx"="application/vnd.visio"
InBlock.gif            
".vtx"="application/vnd.visio"
InBlock.gif            
".vxml"="text/xml"
InBlock.gif            
".wav"="audio/wav"
InBlock.gif            
".wax"="audio/x-ms-wax"
InBlock.gif            
".wb1"="application/x-wb1"
InBlock.gif            
".wb2"="application/x-wb2"
InBlock.gif            
".wb3"="application/x-wb3"
InBlock.gif            
".wbmp"="image/vnd.wap.wbmp"
InBlock.gif            
".wiz"="application/msword"
InBlock.gif            
".wk3"="application/x-wk3"
InBlock.gif            
".wk4"="application/x-wk4"
InBlock.gif            
".wkq"="application/x-wkq"
InBlock.gif            
".wks"="application/x-wks"
InBlock.gif            
".wm"="video/x-ms-wm"
InBlock.gif            
".wma"="audio/x-ms-wma"
InBlock.gif            
".wmd"="application/x-ms-wmd"
InBlock.gif            
".wmf"="application/x-wmf"
InBlock.gif            
".wml"="text/vnd.wap.wml"
InBlock.gif            
".wmv"="video/x-ms-wmv"
InBlock.gif            
".wmx"="video/x-ms-wmx"
InBlock.gif            
".wmz"="application/x-ms-wmz"
InBlock.gif            
".wp6"="application/x-wp6"
InBlock.gif            
".wpd"="application/x-wpd"
InBlock.gif            
".wpg"="application/x-wpg"
InBlock.gif            
".wpl"="application/vnd.ms-wpl"
InBlock.gif            
".wq1"="application/x-wq1"
InBlock.gif            
".wr1"="application/x-wr1"
InBlock.gif            
".wri"="application/x-wri"
InBlock.gif            
".wrk"="application/x-wrk"
InBlock.gif            
".ws"="application/x-ws"
InBlock.gif            
".ws2"="application/x-ws"
InBlock.gif            
".wsc"="text/scriptlet"
InBlock.gif            
".wsdl"="text/xml"
InBlock.gif            
".wvx"="video/x-ms-wvx"
InBlock.gif            
".xdp"="application/vnd.adobe.xdp"
InBlock.gif            
".xdr"="text/xml"
InBlock.gif            
".xfd"="application/vnd.adobe.xfd"
InBlock.gif            
".xfdf"="application/vnd.adobe.xfdf"
InBlock.gif            
".xhtml"="text/html"
InBlock.gif            
".xls"="application/vnd.ms-excel"
InBlock.gif            
".xls"="application/x-xls"
InBlock.gif            
".xlw"="application/x-xlw"
InBlock.gif            
".xml"="text/xml"
InBlock.gif            
".xpl"="audio/scpls"
InBlock.gif            
".xq"="text/xml"
InBlock.gif            
".xql"="text/xml"
InBlock.gif            
".xquery"="text/xml"
InBlock.gif            
".xsd"="text/xml"
InBlock.gif            
".xsl"="text/xml"
InBlock.gif            
".xslt"="text/xml"
InBlock.gif            
".xwd"="application/x-xwd"
InBlock.gif            
".x_b"="application/x-x_b"
InBlock.gif            
".x_t"="application/x-x_t" 
ExpandedBlockEnd.gif
#endregion




 

转载于:https://www.cnblogs.com/walkingboy/archive/2005/09/21/241127.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值