美文网首页
文件下载示例代码(JAVA)

文件下载示例代码(JAVA)

作者: 顽固的小BUG | 来源:发表于2019-08-20 13:17 被阅读0次

    后台代码

     public void exportFile() {
            File file = new File("模板地址");
            FileInputStream fin = null;
            DataInputStream in = null;
            OutputStream out = null;
            try {
                fin = new FileInputStream(file);
                in = new DataInputStream(fin);
                HttpServletResponse response = getRequestContext().getRes();
                response.setContentType("application/msword");
                response.setHeader("Expires", "0");
                response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
                response.setHeader("Pragma", "public");
                // 设置头时如果有中文需要用UrlEncode编码一下
                response.setHeader("Content-disposition",
                        "attachment;filename=" + StringUtil.getFileNameFromPath("模板名称.doc"));
                // 输出流
                out = response.getOutputStream();
                // 输出文件
                int bytes = 0;
                byte[] bufferOut = new byte[1024];
                while ((bytes = in.read(bufferOut)) != -1) {
                    out.write(bufferOut, 0, bytes);
                }
                fin.close();
                in.close();
                out.close();
                requestContext.setRequestComplete(true);
            }
            catch (Exception e) {
                logger.error("模板下载出错!!!!!",e);
            }
            finally {
                if (fin != null) {
                    try {
                        fin.close();
                    }
                    catch (IOException e) {
                        logger.error("模板下载出错!!!!!",e);
                    }
                }
                if (in != null) {
                    try {
                        in.close();
                    }
                    catch (IOException e) {
                        logger.error("模板下载出错!!!!!",e);
                    }
                }
                if (out != null) {
                    try {
                        out.close();
                    }
                    catch (IOException e) {
                        logger.error("模板下载出错!!!!!",e);
                    }
                }
            }
        }
    

    知识拓展

    response的contentType的类型值

    ContentType 属性指定服务器响应的 HTTP 内容类型。如果未指定 ContentType,默认为 text/html。response的ContentType()的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。

    MIME类型的含义

    MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。

    MIME的英文全称是"Multipurpose Internet Mail Extensions" 多功能Internet 邮件扩充服务,它是一种多用途网际邮件扩充协议,在1992年最早应用于电子邮件系统,但后来也应用到浏览器。服务器会将它们发送的多媒体数据的类型告诉浏览器,而通知手段就是说明该多媒体数据的MIME类型,从而让浏览器知道接收到的信息哪些是MP3文件,哪些是Shockwave文件等等。服务器将MIME标志符放入传送的数据中来告诉浏览器使用哪种插件读取相关文件。

    MIME能够支持非ASCII字符、二进制格式附件等多种格式的邮件消息。这个标准被定义在; RFC 2045,; RFC 2046,; RFC 2047,; RFC 2048,; RFC 2049等RFC中。 由RFC 822转变而来的RFC 2822,规定电子邮件标准并不允许在邮件消息中使用7位ASCII字符集以外的字符。正因如此,一些非英语字符消息和二进制文件,图像,声音等非文字消息都不能在电子邮件中传输。MIME规定了用于表示各种各样的数据类型的符号化方法。

    浏览器接收到文件后,会进入插件系统进行查找,查找出哪种插件可以识别读取接收到的文件。如果浏览器不清楚调用哪种插件系统,它可能会告诉用户缺少某插件,或者直接选择某现有插件来试图读取接收到的文件,后者可能会导致系统的崩溃。传输的信息中缺少MIME标识可能导致的情况很难估计,因为某些计算机系统可能不会出现什么故障,但某些计算机可能就会因此而崩溃。

    在把输出结果传送到浏览器上的时候,浏览器必须启动适当的应用程序来处理这个输出文档。这可以通过多种类型MIME(多功能网际邮件扩充协议)来完成。在HTTP中,MIME类型被定义在Content-Type header中。

    例如,假设你要传送一个Microsoft Excel文件到客户端。那么这时的MIME类型就是“application/vnd.ms-excel”。在大多数实际情况中,这个文件然后将传送给Execl来处理(假设我们设定Excel为处理特殊MIME类型的应用程序)。在ASP.NET中,设定MIME类型的方法是通过Response对象的ContentType属性。

    response的contentType

    ajax开发中在请求服务器端的响应时, 对于每一种返回类型 规范的做法是要在服务端指定response的contentType 的. (当然 不指定绝大多数情况下也没什么问题 尤其是返回"非xml"的时候) 。

    常遇到下面的几种情况:

    1、 服务端需要返回一段普通文本给客户端,Content-Type="text/plain";
    2 、服务端需要返回一段HTML代码给客户端 ,Content-Type="text/html";
    3 、服务端需要返回一段XML代码给客户端 ,Content-Type="text/xml";
    4 、服务端需要返回一段javascript代码给客户端,Content-Type="text/javascript";
    5 、服务端需要返回一段json串给客户端,Content-Type="application/Json";

    比较全面的contentType的类型值

    文件扩展名 Content-Type(Mime-Type) 文件扩展名 Content-Type(Mime
    .*( 二进制流,不知道下载文件类型) application/octet-stream .tif image/tiff
    .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
    .cit application/x-cit .class java/*
    .csi application/x-csi .css text/css
    .dcd text/xml .dcx application/x-dcx
    .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
    .etd application/x-ebx .exe application/x-msdownload
    .gif image/gif .gl2 application/x-gl2
    .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
    .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
    .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
    .sis application/vnd.symbian.install .sisx application/vnd.symbian.install
    .x_t application/x-x_t .ipa application/vnd.iphone
    .apk application/vnd.android.package-archive .xap application/x-silverlight-app

    相关文章

      网友评论

          本文标题:文件下载示例代码(JAVA)

          本文链接:https://www.haomeiwen.com/subject/ulxpsctx.html