后台代码
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
application/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