java在response中设置文件流,在浏览器中直接显示或直接下载

在浏览器地址栏输入文件请求url,能在浏览器上直接显示文件,而不直接下载

解决方式设置文件ContentType类型

当设置了ContentType为“image/jpg”时,浏览器可以直接显示图片;

没设置ContentType时,浏览器会直接下载图片到本地。

备注:不能设置header,否则当设置了ContentType时也是直接下载图片

/**
	 * 响应体加入文件流
	 * @param response	
	 * @param filePath	文件从盘符开始的完整路径
	 */
	private void responseFileStream(HttpServletResponse response, String filePath){
		logger.debug("responseFileStream imgPath:"+filePath);
		if(filePath.contains("%")){
			try {
				filePath = URLDecoder.decode(filePath,"UTF-8");
			} catch (UnsupportedEncodingException e) {
				logger.debug("responseFileStream decode error:"+e.toString());
			}
		}
		if(filePath.contains("%")){
			try {
				filePath = URLDecoder.decode(filePath,"UTF-8");
			} catch (UnsupportedEncodingException e) {
				logger.debug("responseFileStream decode error:"+e.toString());
			}
		}
		
		ServletOutputStream out = null;
		FileInputStream in = null;
		try {
			in = new FileInputStream(new File(filePath));
			String[] dir = filePath.split("/");
			String fileName = dir[dir.length-1];
			String[] array = fileName.split("[.]");
			String fileType = array[array.length-1].toLowerCase();
			//设置文件ContentType类型
			if("jpg,jepg,gif,png".contains(fileType)){//图片类型
				response.setContentType("image/"+fileType);
			}else if("pdf".contains(fileType)){//pdf类型
				response.setContentType("application/pdf");
			}else{//自动判断下载文件类型 
				response.setContentType("multipart/form-data");
			}
			//设置文件头:最后一个参数是设置下载文件名
	        //response.setHeader("Content-Disposition", "attachment;fileName="+fileName);   
			out = response.getOutputStream();
			// 读取文件流
			int len = 0;
			byte[] buffer = new byte[1024 * 10];
			while ((len = in.read(buffer)) != -1) {
				out.write(buffer, 0, len);
			}
			out.flush();
		} catch (FileNotFoundException e) {
			logger.error("responseFileStream error:FileNotFoundException" + e.toString());
		} catch (Exception e) {
			logger.error("responseFileStream error:" + e.toString());
		} finally {
			try {
				out.close();
				in.close();
			} catch (NullPointerException e) {
				logger.error("responseFileStream stream close() error:NullPointerException" + e.toString());
			} catch (Exception e) {
				logger.error("responseFileStream stream close() error:" + e.toString());
			}
		}
	}

另外,找了ContentType的对照表,附在下面:

文件扩展名    Content-Type(Mime-Type)    文件扩展名    Content-Type(Mime-Type)
.*( 二进制流,不知道下载文件类型)    application/octet-stream    .tif    image/tiff
0.001    application/x-001    0.301    application/x-301
0.323    text/h323    0.906    application/x-906
0.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    .    application/x-
.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
.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

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值