• 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
  • 相关阅读:
    主要几种通信协议的性能比较(转载)
    mina与spring集成(翻译)
    DF标志和串传送指令
    编写不会产生除法溢出的子程序
    转: 匈牙利标记法
    转:四种方式实现从尾到头输出单向链表(链表逆序打印)
    汇编语言注释标记符
    汇编将数据以十进制格式显示在屏幕上
    转:汇编寄存器的使用
    蒙特卡罗算法 求数组主元素
  • 原文地址:https://www.cnblogs.com/zsy/p/303740.html
Copyright © 2020-2023  润新知