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

   在我们的系统的编写过程中,应该有很多的时候需要客户下载文件.我第一次的做法(应该也是大部分人的做法吧?)是:
1            HttpResponse response = HttpContext.Current.Response;
2            string js = "<script language=javascript>window.open('{0}');</script>";
3            js = string.Format(js, url);
4            response.Write(js);
5

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

 1/// <summary>
 2        /// 下载文件
 3        /// </summary>
 4        /// <param name="filename">文件物理地址</param>        

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

31

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

 1        /// <summary>
 2        /// 下载文件
 3        /// </summary>
 4        /// <param name="filename">文件物理地址</param>

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


 

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